安卓权限管理

写在基类中,安卓6.0以上权限请求管理,没有做版本判断,直接做判断请求

 /**
     * 权限请求成功回调
     * @param perissions 请求成功的权限集合
     */
    public void  perissionRequestSuccessCallback(String perissions[]){

    }
    /**
     * 权限请求失败回调
     * @param perissions 请求失败的权限集合
     */
    public void  perissionRequestFailCallback(String perissions[]){

    }

    private final int permissionsRequestCode = 0;
    public void perissionRequest(String permissions[]){
        List<String> noPermissions = new ArrayList<>();
        for(int i = 0 ; i < permissions.length ; i++){
            if (ContextCompat.checkSelfPermission(context,
                    permissions[i])
                    != PackageManager.PERMISSION_GRANTED) {
                noPermissions.add(permissions[i]);
            }
        }

        if(noPermissions.size() != 0){
            String[] strings = new String[noPermissions.size()];
            for(int i = 0 ; i < noPermissions.size() ; i++){
                strings[i] = noPermissions.get(i);
            }
            ActivityCompat.requestPermissions(this, strings,
                    permissionsRequestCode);
        }else {
            perissionRequestSuccessCallback(new String[]{});
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode,
                                           String permissions[], int[] grantResults) {
        switch (requestCode) {
            case permissionsRequestCode: {
                // If request is cancelled, the result arrays are empty.

                List<String> successPermissionList = new ArrayList<>();
                List<String> failPermissionList = new ArrayList<>();

                if(grantResults.length > 0 && grantResults.length == permissions.length) {
                    for (int i = 0; i < permissions.length; i++) {
                        if (grantResults[i] == PackageManager.PERMISSION_GRANTED) {
                            successPermissionList.add(permissions[i]);
                            LogUtils.logI("用户同意权限", "user granted the permission!" + permissions[i]);
                        } else {
                            LogUtils.logI("用户不同意权限", "user denied the permission!" + permissions[i]);
                            failPermissionList.add(permissions[i]);
                        }
                    }
                }else {
                    for(int i = 0 ; i < permissions.length ; i++){
                        failPermissionList.add(permissions[i]);
                    }
                }

                String[] successPermissions = new String[successPermissionList.size()];
                for(int i = 0 ; i < successPermissionList.size() ; i++){
                    successPermissions[i] = successPermissionList.get(i);
                }
                String[] failPermissions = new String[failPermissionList.size()];
                for(int i = 0 ; i < successPermissionList.size() ; i++){
                    failPermissions[i] = failPermissionList.get(i);
                }
                perissionRequestSuccessCallback(successPermissions);
                perissionRequestFailCallback(failPermissions);
                return;
            }
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值