1. 程式人生 > >Android 7.0以上照相機許可權問題處理

Android 7.0以上照相機許可權問題處理

開發時遇到7.0手機如果相機許可權為詢問或者禁止時,點選拍照沒有任何作用
使用官方推薦配置AndroidManiFest的方法依舊不行
選擇使用大部分app許可權沒有時的做法
如果許可權是詢問:則申請允許許可權
如果許可權是禁止:則跳轉許可權管理app,並申請開啟相機許可權
如果遇到其他許可權方法類似

1.建立判斷當前攝像頭是否有用的工具類

public class CameraCanUseUtils {

    /**
     * 測試當前攝像頭能否被使用
     *
     * @return
     */
    public static
boolean isCameraCanUse() { boolean canUse = true;// Camera mCamera = null; try { mCamera = Camera.open(0); mCamera.setDisplayOrientation(90); } catch (Exception e) { canUse = false; } if (canUse) { mCamera.release(); mCamera = null
; } //Timber.v("isCameraCanuse="+canUse); return canUse; } }

2.如果攝像頭可用,走正常操作;不可用,申請開啟許可權

 if(CameraCanUseUtils.isCameraCanUse()) {
     //攝像頭可用
     selectPicFromCamera();
 } else{
     //攝像頭不可用
     ToastUtils.toastS(mContext, "沒相機許可權,請到應用程式許可權管理開啟許可權");
     //跳轉至app設定
     getAppDetailSettingIntent();
 }

//跳轉app設定
private void getAppDetailSettingIntent() { Intent localIntent = new Intent(); if (Build.VERSION.SDK_INT >= 9) { localIntent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS"); localIntent.setData(Uri.fromParts("package", context.getPackageName(), null)); } else if (Build.VERSION.SDK_INT <= 8) { localIntent.setAction(Intent.ACTION_VIEW); localIntent.setClassName("com.android.settings", "com.android.settings.InstalledAppDetails"); localIntent.putExtra("com.android.settings.ApplicationPkgName", context.getPackageName()); } startActivity(localIntent); }