android 6.0权限--代码

请求权限

    //所需要申请的权限数组
    private static final String[] permissionsArray = new String[]{
            Manifest.permission.WRITE_EXTERNAL_STORAGE,
            Manifest.permission.CALL_PHONE,
            Manifest.permission.SEND_SMS };
    //还需申请的权限列表
    private List<String> mPermissionList = new ArrayList<>();
    //申请权限后的返回码
    private static final int REQUEST_CODE_ASK_PERMISSIONS = 1;

    /**
     * 请求检查权限
     */
    private void requestCheckPermission(Context context) {
        //检查权限
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            //判断那些权限还未授权
            for (String permission : permissionsArray) {
                if (ContextCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {
                    mPermissionList.add(permission);
                }
            }

            //判断是否为空
            if (mPermissionList.isEmpty()) {//未授予的权限为空,表示都授予了
                //要执行的方法
                //.........
            } else {//请求权限方法
                String[] permissions = mPermissionList.toArray(new String[mPermissionList.size()]);//将List转为数组
                ActivityCompat.requestPermissions((Activity) context, permissions, REQUEST_CODE_ASK_PERMISSIONS);
            }
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch (requestCode) {
            case REQUEST_CODE_ASK_PERMISSIONS:
                for (int i = 0; i < grantResults.length; i++) {
                    if (grantResults[i] != PackageManager.PERMISSION_GRANTED) {
                        //判断是否勾选禁止后不再询问
                        boolean showRequestPermission = ActivityCompat.shouldShowRequestPermissionRationale(Bt1.this, permissions[i]);
                        if (showRequestPermission) {//
                            //重新申请权限
                            //.........
                            //return;
                        } else {
                            //已经禁止勾选 don't ask again
                            //.........
                            //showDialogTipUserGoToAppSettting(permissions[i])
                        }
                    }
                }
                //要执行的方法
                //.........
                break;
        }
    }

提示用户去应用设置界面手动开启权限

    // 提示用户去应用设置界面手动开启权限
    private void showDialogTipUserGoToAppSettting(String title) {
        // 跳转到应用设置界面
        AlertDialog dialog = new AlertDialog.Builder(this)
                .setTitle("还有为禁止的权限" + title + ",需要受到设置!")
                .setMessage("请跳转到设置界面同意该:" + title + " 权限!")
                .setPositiveButton("同意", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // 跳转到应用设置界面
                        goToAppSetting();
                    }
                })
                .setNegativeButton("不同意", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        finish();
                    }
                }).setCancelable(false).show();
    }

跳转到当前应用的设置界面

   // 跳转到当前应用的设置界面
    private void goToAppSetting() {
        Intent intent = new Intent();
        intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
        Uri uri = Uri.fromParts("package", getPackageName(), null);
        intent.setData(uri);
        startActivity(intent);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值