andriod系统的权限管理:AndroidPermissionControlCenter 安卓权限管理中心
Android系统权限简介
在android sdk版本<23即android6.0之前,权限的使用方法为:在Manifest.xml清单配置文件中直接引用相关权限即可使用该权限。
形式如下:
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
在android系统6.0之后即sdk>=23之后,不仅需要在清单配置文件中添加相关权限的申请,而且还需要在使用该权限时动态申请权限。
哪些权限需要进行动态申请呢?为此android系统对android系统的权限进行了分组,总体来讲权限可以分为三大类:普通权限、危险权限和特殊权限。
普通权限不做介绍、特殊权限需要去看谷歌官方文档或者百度下了解即可。本文着重讲解需要进行动态权限申请的危险权限做介绍。
危险权限有:(危险权限这一大类中的权限在使用时需要动态权限申请,不申请会闪退报permission denied 错误)
联系人权限组: group:android.permission-group.CONTACTS
permission:android.permission.WRITE_CONTACTS
permission:android.permission.GET_ACCOUNTS
permission:android.permission.READ_CONTACTS
电话权限组: group:android.permission-group.PHONE
permission:android.permission.READ_CALL_LOG
permission:android.permission.READ_PHONE_STATE
permission:android.permission.CALL_PHONE
permission:android.permission.WRITE_CALL_LOG
permission:android.permission.USE_SIP
permission:android.permission.PROCESS_OUTGOING_CALLS
permission:com.android.voicemail.permission.ADD_VOICEMAIL
日历权限组: group:android.permission-group.CALENDAR
permission:android.permission.READ_CALENDAR
permission:android.permission.WRITE_CALENDAR
相机权限组: group:android.permission-group.CAMERA
permission:android.permission.CAMERA
传感器权限组: group:android.permission-group.SENSORS
permission:android.permission.BODY_SENSORS
定位权限组: group:android.permission-group.LOCATION
permission:android.permission.ACCESS_FINE_LOCATION
permission:android.permission.ACCESS_COARSE_LOCATION
存储权限组: group:android.permission-group.STORAGE
permission:android.permission.READ_EXTERNAL_STORAGE
permission:android.permission.WRITE_EXTERNAL_STORAGE
麦克风权限组: group:android.permission-group.MICROPHONE
permission:android.permission.RECORD_AUDIO
短信权限组: group:android.permission-group.SMS
permission:android.permission.READ_SMS
permission:android.permission.RECEIVE_WAP_PUSH
permission:android.permission.RECEIVE_MMS
permission:android.permission.RECEIVE_SMS
permission:android.permission.SEND_SMS
permission:android.permission.READ_CELL_BROADCASTS
在动态权限申请时需要注意的是:每个权限组中只要申请一个权限,授权后,即可获得本组的所有权限。
在动态申请权限中需要使用到的四个方法:
ActivityCompat.checkSelfPermission(this, permission) ://检查该应用是否具备某个permission
ActivityCompat.requestPermissions(this, mApplyPermissions.toArray(new String[0]), APPLY_PERMISSION_REQUESTCODE_BY_FOREACH);
//向系统发起授权申请。
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
//对授权结果做处理
}
shouldShowRequestPermissionRationale(permission)//对这个方法的理解尤为关键,市面上很多权限的关于这个方法的理解不到位,导致出现很多适配问题,需要认真测试下。
为更有效的解决运行时权限申请问题,特此推出开源库:
AndroidPermissionControlCenter 安卓权限管理中心 github地址:https://github.com/deli990/AndroidPermissionControlCenter
网友评论