首页 > 系统 > Android > 正文

Android6.0运行时权限

2019-11-09 17:24:26
字体:
来源:转载
供稿:网友

最近项目用到Android6.0动态权限问题,自己查了很多资料。网上说法也很多!自己也尝试了几种,例如:把SDK改正<23,利用第三方开源库PermissionsDispatcher等,但都觉得比较麻烦最后发现还是google自带的比较方便简单易懂。为了自己以后有资料可查,记录一下!

一,添加一种权限(以录音权限为例)

1,创建一个数组用于存放权限

PRivate static final int RESULT_CODE_STARTAUDIO = 1;//定义变量便于回调结果时处理

String[] perms ={"android.permission.RECORD_AUDIO"}

2,检查设备是否对该应用开发权限

if (PackageManager.PERMISSION_GRANTED == ContextCompat.checkSelfPermission(getapplicationContext(), perm)) {}else{ActivityCompat.requestPermissions(MainActivity.this,perms, RESULT_CODE_STARTAUDIO);}

3,就是权限添加后的回调方法

@Overridepublic void onRequestPermissionsResult(int permsRequestCode, String[] permissions, int[] grantResults) {super.onRequestPermissionsResult(permsRequestCode, permissions, grantResults);switch(permsRequestCode){case RESULT_CODE_STARTAUDIO:boolean albumAccepted = grantResults[0]== PackageManager.PERMISSION_GRANTED;if(!albumAccepted){ToastUtils.show(getApplicationContext(),"请开启录音权限");}break;}}

二,添加多种权限。(添加多种权限就不多说了和添加一种权限相差不大就是数组遍历,就直接上代码了)

private static final int RESULT_CODE_STARTAUDIO = 1;String[] perms = {"android.permission.RECORD_AUDIO","android.permission.WRITE_EXTERNAL_STORAGE","android.permission.READ_EXTERNAL_STORAGE"};private static final int WRITE_EXTERNAL_STORAGE = 2;public void settingPermission() {String perm = null;for (int i = 0; i < perms.length; i++) {perm = perms[i];}if (PackageManager.PERMISSION_GRANTED == ContextCompat.checkSelfPermission(getApplicationContext(), perm)) {}else{ActivityCompat.requestPermissions(MainActivity.this,perms, RESULT_CODE_STARTAUDIO);}}@Overridepublic void onRequestPermissionsResult(int permsRequestCode, String[] permissions, int[] grantResults) {super.onRequestPermissionsResult(permsRequestCode, permissions, grantResults);switch(permsRequestCode){case RESULT_CODE_STARTAUDIO:boolean albumAccepted = grantResults[0]== PackageManager.PERMISSION_GRANTED;if(!albumAccepted){ToastUtils.show(getApplicationContext(),"请开启录音权限");}break;case WRITE_EXTERNAL_STORAGE:boolean writeExternalStorage = grantResults[0]== PackageManager.PERMISSION_GRANTED;if(!writeExternalStorage){ToastUtils.show(getApplicationContext(),"请开启存储权限");}break;}}

另附需要添加的动态权限(为了应用权限兼容性建议在AndroidManifest.xml动态权限也配置一下下):

group:android.permission-group.CONTACTSpermission:android.permission.WRITE_CONTACTSpermission:android.permission.GET_ACCOUNTSpermission:android.permission.READ_CONTACTSgroup:android.permission-group.PHONEpermission:android.permission.READ_CALL_LOGpermission:android.permission.READ_PHONE_STATEpermission:android.permission.CALL_PHONEpermission:android.permission.WRITE_CALL_LOGpermission:android.permission.USE_Sippermission:android.permission.PROCESS_OUTGOING_CALLSpermission:com.android.voicemail.permission.ADD_VOICEMAILgroup:android.permission-group.CALENDARpermission:android.permission.READ_CALENDARpermission:android.permission.WRITE_CALENDARgroup:android.permission-group.CAMERApermission:android.permission.CAMERAgroup:android.permission-group.SENSORSpermission:android.permission.BODY_SENSORSgroup:android.permission-group.LOCATIONpermission:android.permission.access_FINE_LOCATIONpermission:android.permission.ACCESS_COARSE_LOCATIONgroup:android.permission-group.STORAGEpermission:android.permission.READ_EXTERNAL_STORAGEpermission:android.permission.WRITE_EXTERNAL_STORAGEgroup:android.permission-group.MICROPHONEpermission:android.permission.RECORD_AUDIOgroup:android.permission-group.SMSpermission:android.permission.READ_SMSpermission:android.permission.RECEIVE_WAP_PUSHpermission:android.permission.RECEIVE_MMSpermission:android.permission.RECEIVE_SMSpermission:android.permission.SEND_SMSpermission:android.permission.READ_CELL_BROADCASTS


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表