Android 6.0后如何获取运行时权限

1,介绍

【1】一类是Normal Permissions,这类权限一般不涉及用户隐私,是不需要用户进行授权的,比如手机震动、访问网络等

1.ACCESS_LOCATION_EXTRA_COMMANDS

2.ACCESS_NETWORK_STATE

3.ACCESS_NOTIFICATION_POLICY

4.ACCESS_WIFI_STATE

5.BLUETOOTH

6.BLUETOOTH_ADMIN

7.BROADCAST_STICKY

8.CHANGE_NETWORK_STATE

9.CHANGE_WIFI_MULTICAST_STATE

10.CHANGE_WIFI_STATE

11.DISABLE_KEYGUARD

12.EXPAND_STATUS_BAR

13.GET_PACKAGE_SIZE

14.INSTALL_SHORTCUT

15.INTERNET

16.KILL_BACKGROUND_PROCESSES

17.MODIFY_AUDIO_SETTINGS

18.NFC

19.READ_SYNC_SETTINGS

20.READ_SYNC_STATS

21.RECEIVE_BOOT_COMPLETED

22.REORDER_TASKS

23.REQUEST_INSTALL_PACKAGES

24.SET_ALARM

25.SET_TIME_ZONE

26.SET_WALLPAPER

27.SET_WALLPAPER_HINTS

28.TRANSMIT_IR

29.UNINSTALL_SHORTCUT

30.USE_FINGERPRINT

31.VIBRATE

32.WAKE_LOCK

33.WRITE_SYNC_SETTINGS

 

【2】另一类是Dangerous Permission,一般是涉及到用户隐私的,需要用户进行授权,比如读取sdcard、访问通讯录等。

 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

2, 如何动态获取权限

  • 先判断版本号,然后判断是否有权限,在判断是否需要申请

   //判断如果api版本>=23 需要动态获取权限

        if(Build.VERSION.SDK_INT>=23){

            //①checkSelfPermission 检查当前应用是否有特定权限 第一个参数 activity

            //第二个参数 需要检测的权限 Manifest.permission.XXXXX 需要注意 只有危险权限需要动态申请

            //危险权限指 跟用户隐私相关的权限 sd卡 短信 通话记录 打电话权限 位置权限 摄像头权限 录音机权限

            if( ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.READ_EXTERNAL_STORAGE)==

                    PermissionChecker.PERMISSION_DENIED){//判读是否有SD卡读取权限

//               ② 如果没有权限动态申请权限

                //动态申请权限 第二个参数 需要申请的权限的数据 可以一次申请多个权限

                //第三个参数 请求码 需要注意不能小于0

                ActivityCompat.requestPermissions(getActivity(),new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},1);

                return;

            }

        }
  • onRequestPermissionsResult回调处理 

  • 我们在fragment动态申请的权限。但是在MainActivity中才能获取到对应的返回结果。

/**

* 申请权限之后 用户返回的结果在onRequestPermissionsResult中获取

* @param requestCode 请求权限的时候的请求码

* @param permissions  请求的所有权限

* @param grantResults 用户操作后的权限结果  PermissionChecker.PERMISSION_GRANTED授权了

*                     PermissionChecker.PERMISSION_DENIED 未授权

*/

@Override

public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

    if(grantResults[0]== PermissionChecker.PERMISSION_GRANTED){

        //获取权限 再次重新加载数据

      VbangFragment fragment  = (VbangFragment) fragments.get(R.id.tab_vbang);

        fragment.initData();

    }else{

        Utils.showToast(this,"请授权SD卡权限后再操作");

    }

}



 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

兴帅_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值