
我们OEM厂商,出货后,用户第一次开机,系统保存了些默认的配置,是怎么来的呢。有settingprovider提供。
这个是个单独的apk ,就是用来共各个ap查询记录系统信息的。肯定用provider方式。在base/core/java/android/provider/settings.java这个文件提供了很多的接口用来 *** 作数据。
相对来说。及时不用看数据库的实现,只要简单 *** 作这个类就够了。
数据库名字是settings.db 创建了两个表 system, secure 要往某个表里写东西,可以直接叫到 Settings.System.put**() 跟上contentresolver,我不怕苦,不怕输,只怕再多的努力也无助。苏州 qisda 臧春杰 键明,值,同样也可以Settings.System.get** 用法类似。
当然也可以Settings.secure.get put , 安全表主要用来记录一些网络配置信息。这个完全可以通过sqliteexpert打开看看。
第一开机时候,查询时候,会指定数据库名字版本
private static final String DATABASE_NAME = "settings.db"
// Please, please please. If you update the database version, check to make sure the
// database gets upgraded properly. At a minimum, please confirm that 'upgradeVersion'
// is properly propagated through your change. Not doing so will result in a loss of user
// settings.
private static final int DATABASE_VERSION = 80
然后oncreate时候,创建表,然后加载默认数据
loadSystemSettings(db)//nancy, 有问题多讨论。
loadSecureSettings(db)
insert or ignore into system values()
在data\data\com.android.settings\shared_prefs\com.android.settings_pre里面,下面先介绍第一种方法。1,在Z:\myandroid\frameworks\base\packages\SettingsProvider\res\values\defaults.xml里面添加
2,为了保持和原有数据添加方式一致,在Z:\myandroid\frameworks\base\core\Java\android\provider\Settings.java(我百度了,这个文件好像是不同版本,位置可能不一样)里面添加这二个数据的字段,也就是key值,编译的时候必须先编译它,再编译Z:\myandroid\frameworks\base\packages\SettingsProvider,否则报错找不到变量
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)