Android6.0动态申请权限

Android6.0动态申请权限

android6.0之后一些敏感的权限需要在清单文件中注册之外,还需要在代码中动态申请,这里以蓝牙权限为例,我们现在在代码中申请以下三个权限,“android.permission.BLUETOOTH_ADMIN”,“android.permission.BLUETOOTH”,“android.permission.ACCESS_COARSE_LOCATION”;

1.先定义一个字符串数组将我们要申请的权限全部存放在里面

 String[] permissions = new String[]{
            "android.permission.BLUETOOTH_ADMIN", "android.permission.BLUETOOTH"
            , "android.permission.ACCESS_COARSE_LOCATION"};

2.检查手机是否包含这些权限

public boolean requestAll() {
        for (String peimiss : permissions) {
            if (ActivityCompat.checkSelfPermission(this, peimiss) != PackageManager.PERMISSION_GRANTED) {
                return false;
            }
        }
        return true;
    }

返回false表示没有权限,返回true表示有权限,当没有权限时我们再申请权限

3.动态申请权限

if (Build.VERSION.SDK_INT >= 23 && !requestAll()) {
            ActivityCompat.requestPermissions(this, permissions, 0);
        }

完成上述三步后,在没有权限时就会弹出对话框提醒用户打开权限,如果还想监听用户点击对话框的监听,那么就要监听以下方法

4.重写onRequestPermissionsResult方法

//请求n个权限 permissions.length=n grantResults.length=n
    //permissions[i]表示申请的权限字符串 grantResults[i]的值表示用户反馈的结果 0表示同意 -1表示不同意
    //requestCode 的值表示和当时申请权限时的值一致
@Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        for (int i = 0; i < permissions.length; i++) {
            Log.e("Test","permissions==" + i + " ==" + permissions[i]);
        }
        for (int i = 0; i < grantResults.length; i++) {
            Log.e("Test","mygt grantResults==" + i + " ==" + grantResults[i]);
            if (grantResults[i] == -1) {
                //finish();用户不同意打开申请时结束APP
            }
        }
        Log.e("Test","requestCode==" + requestCode + "  ");

        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值