当我在 Redmi 7A 上启动相机拍照时应用程序崩溃。也无法在 UncaughtException 处理程序中捕获崩溃
Posted
技术标签:
【中文标题】当我在 Redmi 7A 上启动相机拍照时应用程序崩溃。也无法在 UncaughtException 处理程序中捕获崩溃【英文标题】:App crashes when I launch camera to take picture on Redmi 7A. Unable to caught the crash in UncaughtException handler as well 【发布时间】:2021-03-02 11:03:34 【问题描述】:。
抓拍后一直停留在同屏,好像没有死机,但所有数据都被清除了。
Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File out = getActivity().getExternalFilesDir(null);
filename = (System.currentTimeMillis() + ".jpg");
out = new File(out, filename);
if (Build.VERSION_CODES.N <= Build.VERSION.SDK_INT)
picUri = FileProvider.getUriForFile(getContext(), getContext().getApplicationContext().getPackageName() + ".provider", out);
i.putExtra(MediaStore.EXTRA_OUTPUT, picUri);
else
i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(out));
getActivity().startActivityForResult(i, ConstantsUtils.CAMERA_REQUEST_CODE);
还在清单中使用 largeHeap 以获得足够的内存
android:largeHeap="true"
并且还在清单中添加了所需的功能
<uses-feature
android:name="android.hardware.camera"
android:required="true" />
<uses-feature
android:name="android.hardware.camera.front"
android:required="true" />
很抱歉,我没有找到与此错误相关的任何日志,我们将不胜感激
【问题讨论】:
日志应该在那里,如果你在 catch 块中添加了 try catch write printStackTrace()。 【参考方案1】:你必须使用 FileProvider。FileProvider 是 ContentProvider 的一个特殊子类,它允许通过 content URI 而不是 file:// URI 在应用程序之间共享文件。
在 res/xml 文件夹中创建一个 XML 文件(provider_path.xml)并定义它 Manifest 文件
<provider android:name="android.support.v4.content.FileProvider" android:authorities="$applicationId.provider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/provider_paths"/> </provider>
在您的 provider_path.xml 文件中写入以下代码。
<?xml version="1.0" encoding="utf-8"?> <paths xmlns:android="https://schemas.android.com/apk/res/android"> <external-path name="external_files" path="."/> </paths>
【讨论】:
以上是关于当我在 Redmi 7A 上启动相机拍照时应用程序崩溃。也无法在 UncaughtException 处理程序中捕获崩溃的主要内容,如果未能解决你的问题,请参考以下文章