有时候我们一些设置属性要保存到本地,防止软件卸载后配置属性消失。 比如我今天就有个修改手机蓝牙名称显示的功能,但是只需要修改一次,并且进行标记,
有时候我们一些设置属性要保存到本地,防止软件卸载后配置属性消失。
比如我今天就有个修改手机蓝牙名称显示的功能,但是只需要修改一次,并且进行标记,并保存这个标识,如果程序卸载,重新安装也不需要再修改,这里就是要保存这个标识,来判断是否需要修改名称。
要实现这个功能,SharePreference是不行的了,本地文件file保存呢,是可以的,但是比较麻烦,而且有被删掉的可能。
这里介绍一个比较简单、实用的方法:
这个方法就是把标识保存到系统配置(系统数据库)文件中,即使程序卸载也不影响,系统的配置文件。
一.在手机中的位置
/data/system/users/0/settings_system.xml 文件中(如果你修改的是 global 或者 secure 的,就在对应的 settings_global.xml / settings_secure.xml 中)
二.创建数据库的实现代码
frameworks\base\packages\SettingsProvider\src\com\Android\providers\settings 的 DatabaseHelper 类里面
三. 读写的方法如下
写字符串Settings.System.putString(ContentResolver resolver, String name, String value)
读字符串Settings.System.getString(ContentResolver resolver, String name)
写整型Settings.System.putInt(ContentResolver resolver, String name, int value)
读整型Settings.System.getInt(ContentResolver resolver, String name,0)
四.具体的操作,我是拿设置下的电池界面来做实验的,具体的是在 PowerUsageSummary 类中的 OnCreate()方法中,核心的代码如下
//CodeDu add
import android.provider.Settings;
import android.util.Log;
import android.content.Context;
//CodeDu add
//CodeDu add
// Context cont = this.getApplicationContext();
Context cont = getContext();
Settings.System.putString(cont.getContentResolver(),"shangqin", "juajuan520");
String msg;
int get_int=0;
msg=Settings.System.getString(cont.getContentResolver(),"shangqin");
Settings.System.putInt(cont.getContentResolver(),"dulei", 520111);
get_int=Settings.System.getInt(cont.getContentResolver(),"dulei",0);
String text = String.valueOf(get_int);
Log.d("CodeDu", msg);
Log.d("CodeDu", text);
//CodeDu add
五.adb 查看设置的属性值
抓settingsProvider:
adb shell settings get global facelock_unlock_device
adb shell settings get system key_unlock_timeout
--结束END--
本文标题: Android保存数据到系统数据库中:Settings.System
本文链接: https://lsjlt.com/news/29017.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-01-21
2023-10-28
2023-10-28
2023-10-27
2023-10-27
2023-10-27
2023-10-27
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0