You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

非系统Android应用无需ADB命令,如何程序化获取WRITE_SECURE_SETTINGS权限?

非系统应用获取WRITE_SECURE_SETTINGS权限的解决方案

你用requestPermissions方法无效的核心原因是:WRITE_SECURE_SETTINGS属于Android的特殊权限,不在危险权限范畴内,常规的权限申请流程完全不适用它,自然不会弹出权限请求弹窗。

针对非系统应用,不需要ADB的情况下,只能通过引导用户手动授权的方式获取该权限,具体步骤如下:

  1. 先在AndroidManifest.xml中声明权限:
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
  1. 编写代码引导用户跳转到系统的应用权限设置页,让用户手动开启权限:
// Kotlin 示例
val intent = Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS)
intent.data = Uri.parse("package:$packageName")
startActivityForResult(intent, 1001)
// Java 示例
Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS);
intent.setData(Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, 1001);
  1. 权限申请结果校验:
    在onActivityResult中检查权限是否成功获取(如果使用AndroidX,推荐用Activity Result API替代startActivityForResult):
// Kotlin 示例
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    if (requestCode == 1001) {
        if (Settings.System.canWrite(this)) {
            // 权限已获取,执行后续操作
        } else {
            // 用户未授权,可提示用户开启权限
        }
    }
}

注意:非系统应用无法通过纯代码自动获取WRITE_SECURE_SETTINGS权限,必须经过用户手动在系统设置中开启,这是Android的权限限制机制决定的。

内容的提问来源于stack exchange,提问作者Sabena yasmin P

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 19:57:10