關於檢測手機攝像頭許可權的問題
阿新 • • 發佈:2019-01-02
攝像頭許可權時系統的危險許可權,對於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型號手機,如若有什麼問題,歡迎大家指教