Android中,为了处理6.0和8.0的动态权限申请,特地整理出一整份清单(代码中使用和Manifest文件中使用)

1.代码中使用(如Kotlin中做一个列表)

    //TODO 要申请的权限权限(尽量整理成册)
    @RequiresApi(Build.VERSION_CODES.KITKAT)
    val base_permissions = arrayOf(
            //TODO 分组:android.permission-group.CALENDAR
            Manifest.permission.CAMERA,//TODO 分组:android.permission-group.CAMERA
            //TODO 分组:android.permission-group.CONTACTS
            Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,           //TODO 分组:android.permission-group.LOCATION
            Manifest.permission.RECORD_AUDIO,       //TODO 分组:android.permission-group.MICROPHONE
            Manifest.permission.READ_PHONE_STATE,   //TODO 分组:android.permission-group.PHONE
            //TODO 分组:android.permission-group.SENSORS
            //TODO 分组:android.permission-group.SMS
            Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE      //TODO 分组:android.permission-group.STORAGE
    )

2.Manifest文件中使用

    <!--以下是,安卓6.0版本,所有不需动态申请的权限-->
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_WIMAX_STATE"/>
    <uses-permission android:name="android.permission.BLUETOOTH"/>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
    <uses-permission android:name="android.permission.BROADCAST_STICKY"/>
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"/>
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
    <uses-permission android:name="android.permission.CHANGE_WIMAX_STATE"/>
    <uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
    <uses-permission android:name="android.permission.EXPAND_STATUS_BAR"/>
    <uses-permission android:name="android.permission.FLASHLIGHT"/>
    <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
    <uses-permission android:name="android.permission.GET_PACKAGE_SIZE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"/>
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
    <uses-permission android:name="android.permission.NFC"/>
    <uses-permission android:name="android.permission.READ_SYNC_SETTINGS"/>
    <uses-permission android:name="android.permission.READ_SYNC_STATS"/>
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
    <uses-permission android:name="android.permission.REORDER_TASKS"/>
    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
    <!--<uses-permission android:name="android.permission.SET_TIME_ZONE"/>-->
    <uses-permission android:name="android.permission.SET_WALLPAPER"/>
    <uses-permission android:name="android.permission.SET_WALLPAPER_HINTS"/>
    <uses-permission android:name="android.permission.SUBSCRIBED_FEEDS_READ"/>
    <uses-permission android:name="android.permission.TRANSMIT_IR"/>
    <uses-permission android:name="android.permission.USE_FINGERPRINT"/>
    <uses-permission android:name="android.permission.VIBRATE"/>
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS"/>
    <uses-permission android:name="com.android.alarm.permission.SET_ALARM"/>
    <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
    <uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT"/>

    <!--安卓6.0以上,虽然可以动态申请权限,但为了防止被坑陷进去,所以也要加入完整之需要动态申请之权限清单
    ~~~~~~~~
    ~~~~~~~
    ~~~~~~
    ~~~~~
    ~~~~
    ~~~
    ~~
    ~
    -->
    <!--android.permission-group.CALENDAR分组
    -->
    <uses-permission android:name="android.permission.READ_CALENDAR"/>
    <uses-permission android:name="android.permission.WRITE_CALENDAR"/>
    <!--android.permission-group.CAMERA分组
    -->
    <uses-permission android:name="android.permission.CAMERA"/>
    <!--android.permission-group.CONTACTS分组
    -->
    <uses-permission android:name="android.permission.READ_CONTACTS"/>
    <uses-permission android:name="android.permission.WRITE_CONTACTS"/>
    <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
    <!--android.permission-group.LOCATION分组
    -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <!--android.permission-group.LOCATION分组
    -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <!--android.permission-group.MICROPHONE分组
    -->
    <uses-permission android:name="android.permission.RECORD_AUDIO"/>
    <!--android.permission-group.PHONE分组
    -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <uses-permission android:name="android.permission.CALL_PHONE"/>
    <uses-permission android:name="android.permission.READ_CALL_LOG"/>
    <uses-permission android:name="android.permission.WRITE_CALL_LOG"/>
    <uses-permission android:name="com.android.voicemail.permission.ADD_VOICEMAIL"/>
    <uses-permission android:name="android.permission.USE_SIP"/>
    <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
    <!--android.permission-group.SENSORS分组
    -->
    <uses-permission android:name="android.permission.BODY_SENSORS"/>
    <!--android.permission-group.SMS分组
    -->
    <uses-permission android:name="android.permission.SEND_SMS"/>
    <uses-permission android:name="android.permission.RECEIVE_SMS"/>
    <uses-permission android:name="android.permission.READ_SMS"/>
    <uses-permission android:name="android.permission.RECEIVE_WAP_PUSH"/>
    <uses-permission android:name="android.permission.RECEIVE_MMS"/>
    <uses-permission android:name="android.permission.READ_CELL_BROADCASTS"/>
    <!--android.permission-group.STORAGE分组
    -->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <!--结束
    ~
    ~~
    ~~~
    ~~~~-->

    <!--蒲公英推荐放置,但我不知道放了有什么用;也没有在以上全部列表里的。-->
    <uses-permission android:name="android.permission.GET_TASKS"/>

3.除此之外,尤其需要注意的一点:

8.0以及【PermissionDispatcher】框架,均需要逐个逐个地申请权限。(【PermissionDispatcher】虽然有时候申请一个也会有相应效果,但不填完整也可能会有坑)。

所以:

1.所有的权限单项,均需完整写出。

2.并且,保证在AndroidManifest文件中,有对应的声明

3.最重要的一点:1次最多,申请3组不同的权限。(超出3组权限,就会掉入,【PermissionDispatcher】框架无法执行预定回调的深坑。)

4.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值