美文网首页我爱编程
两行代码解决android 6.0运行时权限申请问题,几乎无适配

两行代码解决android 6.0运行时权限申请问题,几乎无适配

作者: deli6780 | 来源:发表于2018-04-12 14:16 被阅读126次

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

相关文章

网友评论

    本文标题:两行代码解决android 6.0运行时权限申请问题,几乎无适配

    本文链接:https://www.haomeiwen.com/subject/yebxkftx.html