android申请权限一次性申请多个,Android 批量申请权限
Android開發時,到6.0系統上之后,有的權限就得申請才能用了。
Android將權限分為正常權限 和 危險權限
詳細可參考: (https://www.cnblogs.com/liuzhipenglove/p/7102692.html)
網上也有很多參考例子,我這里總結下我的理解和用法
我們知道在Android6.0(SDK等級是23)以后有些權限是需要動態申請的
然后這里主要記錄下如何同時動態申請多個權限
我申請的權限有三個:READ_EXTERNAL_STORAGE,WRITE_EXTERNAL_STORAGE,CAMERA,分別是讀,寫,還有相機權限, INTERNET的話我發現靜態注冊也是可以的,當然以防萬一也可以加上.然后就是雖然是動態申請,但是還是需要在AndroidManifest.xml文件中進行靜態申請的:
然后是動態權限申請
<1>首先聲明一個數組permissions,將所有需要申請的權限都放在里面
//1、首先聲明一個數組permissions,將所有需要申請的權限都放在里面
String[] permissions = new String[]{
Manifest.permission.CAMERA,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE};
<2>創建一個mPermissionList,逐個判斷哪些權限未授權,將未授權的權限存儲到mPermissionList中
// 聲明一個集合,用來存儲用戶拒絕授權的權
List mPermissionList = new ArrayList<>();
<3>聲明一個請求碼,在請求權限的回調方法onRequestPermissionsResult中需要判斷使用
//10000比較霸氣
private static final int MY_PERMISSIONS_REQUEST_CODE = 10000;
<4>進行權限判斷和申請
private void getPermissions() {
mPermissionList.clear(); //清空已經允許的沒有通過的權限
for (int i = 0; i < permissions.length; i++) { //逐個判斷是否還有未通過的權限
if (ContextCompat.checkSelfPermission(MainActivity.this, permissions[i]) != PackageManager.PERMISSION_GRANTED) {
mPermissionList.add(permissions[i]);
}
}
if (mPermissionList.size() > 0) { //有權限沒有通過,需要申請
ActivityCompat.requestPermissions(this, permissions, MY_PERMISSIONS_REQUEST_CODE);
} else {
Log.e("getPermissions() >>>", "已經授權"); //權限已經都通過了
}
}
<5>請求權限后回調的方法,在權限請求完成后做個判斷,是否完成了所有權限的申請,
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
boolean hasPermissionDismiss = false; //有權限沒有通過
if (MY_PERMISSIONS_REQUEST_CODE == requestCode) {
for (int i = 0; i < grantResults.length; i++) {
if (grantResults[i] == -1) {
hasPermissionDismiss = true; //發現有未通過權限
break;
}
}
}
if (hasPermissionDismiss) { //如果有沒有被允許的權限
//假如存在有沒被允許的權限,可提示用戶手動設置 或者不讓用戶繼續操作
} else {
Log.e("onRequestPermissionsResult >>>", "已全部授權");
}
}
還有記錄一個坑
image.png
如果你的gradle文件中
targetSdkVersion 參數設置成了21的話 等于是用6.0以前的版本運行,這樣的話有可能導致無法動態申請權限,這點需要特別注意下
如若有補充,留言區留下你的寶貴意見,謝謝!!!
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的android申请权限一次性申请多个,Android 批量申请权限的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: git源码安装
- 下一篇: android 多个占位符,Androi