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

Kotlin使用Settings.System.putInt提示Unresolved Reference Settings如何解决

问题解决步骤

1. 解决类找不到报错

编译器提示Unresolved Reference Settings是因为没有导入对应的Android系统类,在你的Kotlin代码文件顶部添加如下导入语句即可:

import android.provider.Settings

添加后即可解决编译期找不到Settings类的问题。

2. 补充运行必要配置

Settings.System.putInt是用来修改系统公共设置的API,使用前还需要完成权限配置:

  • 首先在AndroidManifest.xml中添加权限声明:
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    
  • 该权限属于特殊的系统设置修改权限,仅清单声明无法生效,Android 6.0(API 23)及以上版本需要在调用相关代码前,主动申请权限,引导用户手动授权,参考代码如下:
    // 先判断是否已经拿到权限
    if (!Settings.System.canWrite(context)) {
        val intent = Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS).apply {
            data = Uri.parse("package:${context.packageName}")
        }
        startActivity(intent)
        // 授权后再执行写入设置的逻辑
    } else {
        // 已经有权限,直接执行你的写入逻辑
        Settings.System.putInt(context.contentResolver, SETTINGS_1, shutterOpen)
        Settings.System.putInt(context.contentResolver, SETTINGS_2, muted)
    }
    

额外注意事项

  • 如果你代码中的SETTINGS_1、SETTINGS_2是自定义的系统属性,第三方无系统签名的App在大部分厂商ROM上是没有写入权限的,仅能修改系统公开的可修改设置项,可直接使用Settings.System类下封装的官方常量。
  • 如果只是需要存储App自身的配置数据,更推荐使用SharedPreferences,不需要申请系统权限,使用门槛更低。

内容的提问来源于stack exchange,提问作者Naseef Chowdhury

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:54:02