android6.0获得运行时权限方法抽取

activityhasPermission()truefalse

权限授权完成后会调用permissionOver(int eventType)方法 可以根据eventType来决定授权后的操作


    /**
     * 请求所需要的权限
     *
     * @param permissionName
     * @return
     */
    public boolean hasPermission(int eventType, String... permissionName) {
        this.currentPermissEventType = eventType;
        if (permissionName == null) return true;
        for (int i = 0; i < permissionName.length; i++) {
            if (ContextCompat.checkSelfPermission(this,permissionName[i])!= PackageManager.PERMISSION_GRANTED) {
                permissionSet.add(permissionName[i]);
            }
        }
        if (permissionSet.size() == 0) return true;
        else {
            ActivityCompat.requestPermissions(this,
                    permissionSet.toArray(new String[permissionSet.size()]),
                    REQUEST_CODE_PERMISSON);
            return false;
        }

    }

    private HashSet<String> permissionSet = new HashSet<>();

    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        StringBuffer stringBuffer = new StringBuffer();
        for (String e : permissions
                ) {
            stringBuffer.append(e + "---");
        }
        LogUtils.e("BaseActivity", "permissions:" + stringBuffer.toString());
        switch (requestCode) {
            case REQUEST_CODE_PERMISSON:
                for (int i = 0; i < permissions.length; i++) {
                    // Check for ACCESS_FINE_LOCATION
                    permissionSet.remove(permissions[i]);
                    if (grantResults[i] == PackageManager.PERMISSION_GRANTED) {

                    } else {
                        ToastUtils.show("权限被拒绝");
                    }
                }
                for (String s : permissionSet) {
                    if (ContextCompat.checkSelfPermission(this, s)
                            != PackageManager.PERMISSION_GRANTED) {
                        ActivityCompat.requestPermissions(this,
                                new String[]{s},
                                REQUEST_CODE_PERMISSON);
                    } else {
                        permissionSet.remove(s);
                    }
                }
                if (permissionSet.size() == 0) permissionOver(currentPermissEventType );
                break;
            default:
                super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        }
    }

    /**
     * 授权完成调用该方法
     */
    protected void permissionOver(int eventType) {
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值