美文网首页我爱编程
两行代码解决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