当我在 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 文件 &lt;provider android:name="android.support.v4.content.FileProvider" android:authorities="$applicationId.provider" android:exported="false" android:grantUriPermissions="true"&gt; &lt;meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/provider_paths"/&gt; &lt;/provider&gt;

在您的 provider_path.xml 文件中写入以下代码。 &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;paths xmlns:android="https://schemas.android.com/apk/res/android"&gt; &lt;external-path name="external_files" path="."/&gt; &lt;/paths&gt;

【讨论】:

以上是关于当我在 Redmi 7A 上启动相机拍照时应用程序崩溃。也无法在 UncaughtException 处理程序中捕获崩溃的主要内容,如果未能解决你的问题,请参考以下文章

故意相机崩溃

Android 相机 - 有时当我拍照时,应用程序冻结并且相机无法使用

以编程方式在 Android 上使用相机拍照

从相机拍照后 UIImageView 旋转

我的应用程序启动时如何在没有预览的情况下从相机拍照?

从 iphone 相机拍照时收到 iphone 中的内存警告问题