Android 6.0之后動(dòng)態(tài)申請(qǐng)權(quán)限

一、多權(quán)限申請(qǐng)

①在oncreat()方法中寫此方法

/**
* 6.0之后的動(dòng)態(tài)申請(qǐng)權(quán)限
*/
checkRequiredPermission(LoginActivity.this);

/**
* 檢查權(quán)限
* @param activity
*/
private void checkRequiredPermission(final Activity activity) {
for (String permission : permissionsArray) {
if (ContextCompat.checkSelfPermission(activity, permission) != PackageManager.PERMISSION_GRANTED) {
permissionsList.add(permission);
}
}
if (permissionsList.size()!=0){
ActivityCompat.requestPermissions(activity, permissionsList.toArray(new String[permissionsList.size()]), REQUEST_CODE_ASK_PERMISSIONS);
}

}

③實(shí)現(xiàn)回調(diào)

//動(dòng)態(tài)申請(qǐng)權(quán)限的返回值
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case REQUEST_CODE_ASK_PERMISSIONS:
for (int i = 0; i < permissions.length; i++) {
if (grantResults[i] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(LoginActivity.this, "權(quán)限開啟" + permissions[i], Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(LoginActivity.this, "權(quán)限禁止" + permissions[i], Toast.LENGTH_SHORT).show();
}
}
break;
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}

二、單權(quán)限申請(qǐng)(也可以直接用多權(quán)限申請(qǐng)的方法,在里面只寫一個(gè)權(quán)限):


第一步判斷時(shí)候授權(quán)。

if (Build.VERSION.SDK_INT >= 23) { int checkCallPhonePermission = ContextCompat.checkSelfPermission(FoodActivity.this, Manifest.permission.CAMERA);
??????????????????????? if(checkCallPhonePermission != PackageManager.PERMISSION_GRANTED){
??????????????????????????? ActivityCompat.requestPermissions(FoodActivity.this,new String[]{Manifest.permission.CAMERA},222);
??????????????????????????? return;
??????????????????????? }else{

??????????????????????????? openCamra();//調(diào)用具體方法
??????????????????????? }
??????????????????? } else {

??????????????????????? openCamra();//調(diào)用具體方法

}

②寫回調(diào)

@Override
??? public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
??????? switch (requestCode) {
??????? //就像onActivityResult一樣這個(gè)地方就是判斷你是從哪來(lái)的。
??????????? case 222:
??????????????? if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
??????????????????? // Permission Granted
??????????????????? openCamra();
??????????????? } else {
??????????????????? // Permission Denied
??????????????????? Toast.makeText(FoodActivity.this, "很遺憾你把相機(jī)權(quán)限禁用了。請(qǐng)務(wù)必開啟相機(jī)權(quán)限享受我們提供的服務(wù)吧。", Toast.LENGTH_SHORT)
??????????????????????????? .show();
??????????????? }
??????????????? break;
??????????? default:
??????????????? super.onRequestPermissionsResult(requestCode, permissions, grantResults);
??????? }
??? }

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容