美文网首页
调用系统相机崩溃

调用系统相机崩溃

作者: iceIC | 来源:发表于2018-04-04 17:13 被阅读50次

    崩溃手机

    机型: 华为
    系统: Android 4.4.2

    崩溃日志

    Process: com.huawei.camera, PID: 31496
        java.lang.SecurityException: Permission Denial: opening provider android.support.v4.content.FileProvider from ProcessRecord{44394a00 31496:com.huawei.camera/u0a11} (pid=31496, uid=10011) that is not exported from uid 10166
        at android.os.Parcel.readException(Parcel.java:1468)
        at android.os.Parcel.readException(Parcel.java:1422)
        at android.app.ActivityManagerProxy.getContentProvider(ActivityManagerNative.java:2865)
        at android.app.ActivityThread.acquireProvider(ActivityThread.java:4685)
        at android.app.ContextImpl$ApplicationContentResolver.acquireUnstableProvider(ContextImpl.java:2361)
        at android.content.ContentResolver.acquireUnstableProvider(ContentResolver.java:1459)
        at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:916)
        at android.content.ContentResolver.openOutputStream(ContentResolver.java:679)
        at android.content.ContentResolver.openOutputStream(ContentResolver.java:655)
        at com.huawei.camera.util.ActivityUtil.openOutputStream(ActivityUtil.java:72)
        at com.huawei.camera.util.ActivityUtil.writeDataToUri(ActivityUtil.java:81)
        at com.huawei.camera.ui.page.ReviewPage.handlePhotoDataResult(ReviewPage.java:117)
        at com.huawei.camera.ui.page.ReviewPage.doReturnToCaller(ReviewPage.java:107)
        at com.huawei.camera.ui.page.ReviewPage.access$000(ReviewPage.java:33)
        at com.huawei.camera.ui.page.ReviewPage$1.onClick(ReviewPage.java:49)
        at android.view.View.performClick(View.java:4446)
        at android.view.View$PerformClick.run(View.java:18480)
        at android.os.Handler.handleCallback(Handler.java:733)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5315)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:680)
        at dalvik.system.NativeStart.main(Native Method)
    

    解决办法

    我是照着这个博客的方法解决的。
    总结下就是两种方法。
    1.在开启相机前进行兼容性判断
    uri照片的uri,intent开启相机的intent

    if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.LOLLIPOP) {
        intent.setClipData(ClipData.newRawUri("", uri));
        intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION|Intent.FLAG_GRANT_READ_URI_PERMISSION);
    }
    

    2.直接给予系统相机所需要的权限
    grantUriPermission("com.huawei.camera", uri, Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);

    相关文章

      网友评论

          本文标题:调用系统相机崩溃

          本文链接:https://www.haomeiwen.com/subject/ubflhftx.html