1. 程式人生 > >關於檢測手機攝像頭許可權的問題

關於檢測手機攝像頭許可權的問題

攝像頭許可權時系統的危險許可權,對於6.0以上和6.0以下系統有著不同的檢測方法。

6.0以上系統:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {//6.0以上系統
            Log.e(TAG, "onCreate: 6.0以上系統" );
            try {
                //獲得程式targetSdkVersion
                PackageInfo info = getPackageManager().getPackageInfo(getPackageName(),0
); int targetSdkVersion = info.applicationInfo.targetSdkVersion; if(targetSdkVersion>23){//targetSdkVersion>23時使用ContextCompat.checkSelfPermission()檢查許可權 if(ContextCompat.checkSelfPermission(this, needPermissions[0]) != PackageManager.PERMISSION_GRANTED || ActivityCompat.shouldShowRequestPermissionRationale(this
, needPermissions[0])){ //未授權 showMissingPermissionDialog(); }else{//已授權 initView(); } }else{//targetSdkVersion>23時使用PermissionChecker.checkSelfPermission檢查許可權 if
(PermissionChecker.checkSelfPermission(this,needPermissions[0]) == PermissionChecker.PERMISSION_GRANTED){ //已授權 initView(); }else{ //未授權 showMissingPermissionDialog(); } } } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } }

6.0以下系統:系統沒有直接提供檢測的API,只能判斷系統攝像頭是否可用

public static boolean cameraIsCanUse() {
        boolean isCanUse = true;
        Camera mCamera = null;
        try {
            mCamera = Camera.open();
            Camera.Parameters mParameters = mCamera.getParameters();
            mCamera.setParameters(mParameters);
        } catch (Exception e) {
            isCanUse = false;
        }

        if (mCamera != null) {
            try {
                mCamera.release();
            } catch (Exception e) {
                e.printStackTrace();
                return isCanUse;
            }
        }
        return isCanUse;
    }

這樣大概可以設配大多數手機,本人測試時候只用了兩臺機器,一個是6.0以上的小米note手機,一個是6.0以下的華為SCL-TL00H型號手機,如若有什麼問題,歡迎大家指教