Android中Settings.System的使用

如果有留意Android中系统设置Settings里面的源码,你会发现代码中频繁用到了Settings.System操作,该类通过键值对的形式,将一些特定的值以全局的模式保存到Setting的数据库中,我们可以通过它提供的get或者put形式的方法对其中的数据进行读写操作,(非系统级别的应用需要添加对应的权限)。当然,如果能够对frameworks进行修改,我们甚至可以在该类中添加一些特定的值,以方便自己或他人使用。
一、通过Settings.System进行读写
//其中”getXXX”代表对应的类似方法,如getInt()、getBoolean、putString()等。
//通过变量名称获取值,如果变量不存在,数据库中没有设置过初始值或者该值类型不对,将抛出SettingNotFoundException异常
Settings.System.getXXX(ContentResolver cr, String name);
//通过变量名称获取值,如果发生上面方法中导致异常的情况,将返给定的默认值
Settings.System.getXXX(ContentResolver cr, String name, XXX def);
//将指定名称的值写入数据库
Settings.System.putXXX(ContentResolver cr,String name, XXX Value);
非系统权限,需要在App项目的AndroidMainfes.xml文件中添加如下权限:

<uses-permission android:name="android.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />

二、在Settings.System添加一个自定义的全局变量
Settings.java文件位于frameworks\base\core\java\android\provider下,打开该文件,搜索关键词 SETTINGS_TO_BACKUP ,共有两处,一处是在Settings里面,另一处在内部类Settings.System里面,在SETTINGS_TO_BACKUP数组上面添加自定义变量,同时在该数组里面添加自定义变量名称,Settting和内部类System都需要添加(共两个地方),比如自定义系统变量SYSTEM_ZWH:

public static final String SYSTEM_ZWH = "system_zwh";
Public static final String[] SETTINGS_TO_BACKUP = {
...
SYSTEM_ZWH,
... }

然后,在代码中我们就可以通过对于的get和put方法对该值进行读取和写入操作了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这可能是因为在重启后,系统会重置屏幕亮度到默认值,而默认值可能是1。您可以在应用程序启动时读取当前屏幕亮度值,并在应用程序退出前保存该值。这样,在下次应用程序启动时,您可以将保存的屏幕亮度值重新应用到系统设置。您可以尝试使用以下代码来实现: ``` // 读取当前屏幕亮度值 int screenBrightness = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS); // 保存屏幕亮度值 SharedPreferences preferences = getPreferences(Context.MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putInt("screenBrightness", screenBrightness); editor.apply(); // 在应用程序启动时将保存的屏幕亮度值应用到系统设置 int savedScreenBrightness = preferences.getInt("screenBrightness", -1); if (savedScreenBrightness != -1) { Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, savedScreenBrightness); } ``` 请注意,在Android 6.0及更高版本,应用程序需要获得WRITE_SETTINGS权限才能写入系统设置。您可以在应用程序的AndroidManifest.xml文件添加以下权限声明: ``` <uses-permission android:name="android.permission.WRITE_SETTINGS" /> ``` 同时,需要在应用程序运行时请求这个权限: ``` if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (!Settings.System.canWrite(this)) { Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS); intent.setData(Uri.parse("package:" + getPackageName())); startActivityForResult(intent, 1); } } ``` 这段代码将打开一个系统界面,允许用户授予应用程序WRITE_SETTINGS权限。当用户授予权限后,您的应用程序就可以写入系统设置了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值