1. 程式人生 > >Android6.0動態獲取攝像頭許可權(舉一反三)

Android6.0動態獲取攝像頭許可權(舉一反三)

6.0系統可以動態的獲取系統的許可權API>22

例如攝像頭

舉一反三寫一個動態獲取攝像頭的方法,其他的許可權也可以稍微修改使用。

在呼叫攝像頭的地方進行判斷,系統的版本

Build.VERSION.SDK_INT>22

如果系統6.0或以上,就判斷有沒有許可權:

ContextCompat.checkSelfPermission(MainActivity.this,
                            android.Manifest.permission.CAMERA)!= PackageManager.PERMISSION_GRANTED

PackageManager有兩個屬性PERMISSION_GRANTED,PERMISSION_DENIED;

GRANTED是已經獲取到許可權,
DENIED是沒有獲取到許可權;

如果有許可權了想幹嘛幹嘛,如果沒有,就去獲取許可權:

ActivityCompat.requestPermissions(MainActivity.this,
   new String[]{android.Manifest.permission.CAMERA},CAMERA_OK);

然後獲取許可權就結束了,然後幹嘛呢?獲取許可權也有個回撥:onRequestPermissionsResult

 @Override
    public void onRequestPermissionsResult(int
requestCode,String[] permissions,int[] grantResults) { switch (requestCode){ case CAMERA_OK: if (grantResults.length>0&&grantResults[0]==PackageManager.PERMISSION_GRANTED){ //這裡已經獲取到了攝像頭的許可權,想幹嘛幹嘛了可以 }else { //這裡是拒絕給APP攝像頭許可權,給個提示什麼的說明一下都可以。
Toast.makeText(MainActivity.this,"請手動開啟相機許可權",Toast.LENGTH_SHORT).show(); } break; default: break; } }

貼一下獲取許可權的程式碼:

if (Build.VERSION.SDK_INT>22){
                    if (ContextCompat.checkSelfPermission(MainActivity.this,
                            android.Manifest.permission.CAMERA)!= PackageManager.PERMISSION_GRANTED){
                       //先判斷有沒有許可權 ,沒有就在這裡進行許可權的申請
                        ActivityCompat.requestPermissions(MainActivity.this,
                                new String[]{android.Manifest.permission.CAMERA},CAMERA_OK);

                    }else {
                      //說明已經獲取到攝像頭許可權了 想幹嘛幹嘛  
                    }
                }else {
//這個說明系統版本在6.0之下,不需要動態獲取許可權。

                }

舉一反三,可以把其他的動態申請許可權的替換來。別忘了清單檔案裡面註冊上許可權。