安卓权限管理

来源:互联网 发布:淘宝网棉麻连衣裙 编辑:程序博客网 时间:2024/06/07 01:11

写在基类中,安卓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;            }        }    }
0 0
原创粉丝点击