Android 动态权限申请
生活随笔
收集整理的這篇文章主要介紹了
Android 动态权限申请
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、在AndroidManifest.xml中聲明需要的權限
<!-- 這個權限用于進行網絡定位--><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/><!-- 這個權限用于訪問GPS定位--><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>2、聲明需要動態申請的權限數組、返回碼
private final String[] permissions = new String[]{Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.ACCESS_COARSE_LOCATION,Manifest.permission.WRITE_EXTERNAL_STORAGE};private final int PERMISSIONS_RESULT_CODE = 121;// 自定義3、檢查是否已經獲得授權,若未獲得權限,就申請
/*** 申請權限*/private void checkPermission() {// SDK版本 大于或等于23 動態申請權限if(Build.VERSION.SDK_INT < Build.VERSION_CODES.M) return;// 檢查 未授權 的 權限List<String> pl = new ArrayList<>();for(String permission : permissions){if(ContextCompat.checkSelfPermission(this,permission)!= PackageManager.PERMISSION_GRANTED){pl.add(permission);}}// 申請權限if(pl.size() > 0){ActivityCompat.requestPermissions(this, pl.toArray(new String[0]),PERMISSIONS_RESULT_CODE);}}4、重寫onRequestPermissionsResult() ,處理返回結果,是否獲得授權
@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {super.onRequestPermissionsResult(requestCode, permissions, grantResults);if(requestCode == PERMISSIONS_RESULT_CODE && grantResults.length > 0){// 判斷 是否獲得 權限for(int i=0;i < grantResults.length;i++){// 未得到 授權 的權限if(grantResults[i] != PackageManager.PERMISSION_GRANTED){if(!ActivityCompat.shouldShowRequestPermissionRationale(this, permissions[i])){Log.i("WY",permissions[i]+" 未授權且不再詢問");}else{Log.i("WY",permissions[i]+" 未授權");}}else{Log.i("WY",permissions[i]+" 已授權");}}}}總結
以上是生活随笔為你收集整理的Android 动态权限申请的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ⑥tiny4412 Linux驱动开发之
- 下一篇: Android 11 存储权限适配指南