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
相关产品推荐
相关产品推荐

