Android保存数据到系统数据库中:Settings.System

有时候我们一些设置属性要保存到本地,防止软件卸载后配置属性消失。
比如我今天就有个修改手机蓝牙名称显示的功能,但是只需要修改一次,并且进行标记,并保存这个标识,如果程序卸载,重新安装也不需要再修改,这里就是要保存这个标识,来判断是否需要修改名称。
要实现这个功能,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
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值