用户圆形头像调用摄像头出现的异常解决

本文介绍了解决Android应用中遇到的相机权限拒绝及FileUriExposedException异常的方法。通过调整Manifest文件中的权限声明,并在Application类中加入特定代码来避免Android 7.0及以上版本的安全限制。
崩溃报错如下:
Caused by: java.lang.SecurityException: Permission Denial: starting Intent { act=android.media.action.IMAGE_CAPTURE flg=0x3 mCallingUid=10129 cmp=com.android.camera/.CameraActivityWraper clip={text/uri-list U:file:///storage/emulated/0/msf/msf_pic_1494294113257.jpg} (has extras) } from ProcessRecord{c77e08f 25156:com.yianju/u0a129, isShadow:false} (pid=25156, uid=10129) with revoked permission android.permission.CAMERA
    at android.os.Parcel.readException(Parcel.java:1620)
    at android.os.Parcel.readException(Parcel.java:1573)
    at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:2744)
    at android.app.Instrumentation.execStartActivity(Instrumentation.java:1509)
    at android.app.Activity.startActivityForResult(Activity.java:3990)
    at android.app.Activity.startActivityForResult(Activity.java:3951)
    at com.alibaba.sdk.android.msf.dialog.PicDialog.camera(PicDialog.java:188)
    at com.alibaba.sdk.android.msf.dialog.PicDialog$4.onClick(PicDialog.java:177)
    at android.view.View.performClick(View.java:5226)
    at android.view.View$PerformClick.run(View.java:21350)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:5582)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

崩溃原因:在manifest里定义了两个相同的permission,去掉一个即可,注意:例如你的项目叫app,依赖了A工程,如果这两个工程都需要一个perssion,那么在app里和A里只需要写一个perssion,而不是app和A里都写一个.

android.os.FileUriExposedException: file:///storage/emulated/0/ilive/images/photophoto.jpeg exposed beyond app through ClipData.Item.getUri()

解决办法: 
将下面的代码拷贝到application类里面,

  // android 7.0系统解决拍照的问题
        StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
        StrictMode.setVmPolicy(builder.build());
        builder.detectFileUriExposure();
  • 1
  • 2
  • 3
  • 4

这样,问题就可以解决了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值