Hultron的博客

我们都曾不堪一击,我们终将刀枪不入。

对 SYSTEM_ALERT_WINDOW 和 WRITE_SETTINGS 的处理

最近开始开始研究 Android 6.0 的适配,关于两个特殊权限,查阅了一下资料,对于处理方法,在这里做个记录。

SYSTEM_ALERT_WINDOW

@TargetApi(Build.VERSION_CODES.M)
    private void requestDrawOverLays() {
        if (!Settings.canDrawOverlays(SettingActivity.this)) {

            AlertDialog dialog = new AlertDialog.Builder(SettingActivity.this)
                    .setTitle("需要您手动授予权限")
                    .setMessage("点击 OK 进入设置页面手动开启权限,允许本应用在其他应用界面之上打开")
                    .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                        //核心代码
                            Intent i = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
                                    Uri.parse("package:" + getPackageName()));
                            startActivityForResult(i, OVERLAY_PERMISSION_REQ_CODE);
                        }
                    })
                    .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            mSwSms.setChecked(false);
                        }
                    })
                    .create();
            dialog.show();
        }
    }

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == OVERLAY_PERMISSION_REQ_CODE) {
            if (Build.VERSION.SDK_INT >= 23 && !Settings.canDrawOverlays(this)) {
                Toast.makeText(this, "Permission Denied by user.", Toast.LENGTH_SHORT)
                        .show();
                mSwSms.setChecked(false);
            } else {
                Toast.makeText(this, "Permission allowed", Toast.LENGTH_SHORT).show();
            }
        } else if (requestCode == QRCODE_RESULT) {
            if (resultCode == RESULT_OK) {
                Bundle bundle = data.getExtras();
                String scanResult = bundle.getString("result");
                mScanResult.setText(scanResult);
            }
        }
    }

WRITE_SETTINGS

@TargetApi(23)
    private void writeSettingsPermission() {
        if(!Settings.System.canWrite(this)){
            AlertDialog dialog = new AlertDialog.Builder(this)
                    .setTitle("WRITE_SETTINGS权限申请")
                    .setMessage("点击OK进入设置界面授予权限")
                    .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            //核心代码
                            Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS,
                                    Uri.parse("package:" + getPackageName()));
                            startActivityForResult(intent, REQUEST_CODE_WRITE_SETTINGS);
                        }
                    })
                    .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                        }
                    })
                    .create();
            dialog.show();
        }
    }

    @Override
    @TargetApi(23)
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == REQUEST_CODE_WRITE_SETTINGS) {
            if (Settings.System.canWrite(this)) {
                Toast.makeText(this, "WRITE_SETTINGS permission granted", Toast.LENGTH_SHORT)
                        .show();
            } else {
                Toast.makeText(this, "WRITE_SETINGS permission denied", Toast.LENGTH_SHORT)
                        .show();
            }
        }
    }
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Hultron/article/details/67639445
文章标签: android 特殊权限
个人分类: Android
上一篇XML中的布局元素必须在代码中有一个一致的对应才可以被实例化
想对作者说点什么? 我来说一句

android6.0 权限申请demo

2017年07月15日 342KB 下载

android 6.0 权限

2016年05月14日 211KB 下载

视觉找圆算法

2018年02月21日 6KB 下载

图像灰度变换vb

2018年03月27日 220KB 下载

java图像像素点的处理

2011年06月28日 234KB 下载

JAVA对音频文件处理程序

2012年04月28日 4KB 下载

文本处理(取轮廓和细化).rar

2011年12月19日 6KB 下载

对大量图片进行灰度处理

2016年11月04日 2KB 下载

mips延迟槽

2017年11月06日 17KB 下载

没有更多推荐了,返回首页

关闭
关闭