安卓6.0之后权限获取变了,所以就算直接添加了安卓权限但是还是显示权限错误,错误如下:
W/System.err: java.lang.SecurityException: Permission Denial: starting Intent { act=android.media.action.IMAGE_CAPTURE cmp=com.huawei.camera/.ThirdCamera } from ProcessRecord{deeffca 32623:0:com.luotuomianyang.isc.pengyouquan/u0a144} (pid=32623, uid=10144) with revoked permission android.permission.CAMERA
W/System.err: at android.os.Parcel.readException(Parcel.java:1602)
W/System.err: at android.os.Parcel.readException(Parcel.java:1555)
W/System.err: at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:2659)
W/System.err: at android.app.Instrumentation.execStartActivity(Instrumentation.java:1518)
W/System.err: at android.app.Activity.startActivityForResult(Activity.java:4032)
W/System.err: at android.app.Activity.startActivityForResult(Activity.java:3986)
W/System.err: at com.luotuomianyang.isc.pengyouquan.activities.ShowMainActivity$4.onClick(ShowMainActivity.java:174)
W/System.err: at android.view.View.performClick(View.java:5273)
W/System.err: at android.view.View$PerformClick.run(View.java:21315)
W/System.err: at android.os.Handler.handleCallback(Handler.java:743)
W/System.err: at android.os.Handler.dispatchMessage(Handler.java:95)
W/System.err: at android.os.Looper.loop(Looper.java:150)
W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5665)
W/System.err: at java.lang.reflect.Method.invoke(Native Method)
W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:799)
W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:689)
1. 在
AndriodManifest.xml中添加
2. 程序中添加判断<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.CAMERA"/>
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { requestPermissions(new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE}, PHOTO_REQUEST_TAKEPHOTO); }
这样就可以正常使用相机了