利用Setting Provider添加保存数据项
来源:互联网 发布:mac必装软件 知乎 编辑:程序博客网 时间:2024/06/03 09:36
Framework需要定制的时候,可能会增加新的数据项,setting的数据实际是从SettingProvider里面读出来的,里面有一个settings.db的文件,在第一次启动android手机的时候会在默认的文件中读取设定的值,下面就以添加一项来说明这个过程:
1)第一次启动默认值在frameworks/base/packages/SettingsProvider/res/values/defaults.xml 中,需要添加相应的项
+ <string name="def_dongle_name" translatable="false">00:00:00:00:00</string>
2)frameworks/base/core/java/android/provider/Settings.java中,添加第一次启动加载的流程
a) 申明
+ public static final String DONGLE_NAME = "dongle_name";
b)加载序列控制:
+++ b/frameworks/base/core/java/android/provider/Settings.java@@ -1724,13 +1724,6 @@ public final class Settings { */ public static final int SCREEN_BRIGHTNESS_MODE_AUTOMATIC = 1; - /// frank: add for default dongle name @{- public static final String DONGLE_NAME = "dongle_name";- /// frank: add for default dongle name end @}- /** * Control whether the process CPU usage meter should be shown. *@@ -2372,9 +2365,6 @@ public final class Settings { SCREEN_BRIGHTNESS, SCREEN_BRIGHTNESS_MODE, SCREEN_AUTO_BRIGHTNESS_ADJ,- /// frank: add for default dongle name @{- DONGLE_NAME,- /// frank: add for default dongle name end @} VIBRATE_INPUT_DEVICES, MODE_RINGER, // moved to global MODE_RINGER_STREAMS_AFFECTED,
c) 读取默认值
+++ b/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java@@ -1991,11 +1991,6 @@ public class DatabaseHelper extends SQLiteOpenHelper { loadBooleanSetting(stmt, Settings.System.SCREEN_BRIGHTNESS_MODE, R.bool.def_screen_brightness_automatic_mode); + /// frank: add for default dongle name @{+ loadStringSetting(stmt, Settings.System.DONGLE_NAME,+ R.string.def_dongle_name);+ /// frank: add for default dongle name end @}+ loadDefaultAnimationSettings(stmt); loadBooleanSetting(stmt, Settings.System.ACCELEROMETER_ROTATION,
以上的步骤在OOBE中被调用,以后的开关机流程就不会进去了
3 )
找一个入口更新值:packages/apps/Settings/src/com/android/settings/wfd/WifiDisplaySettings.java+ /// frank: add for dongle pair @{+ DialogInterface.OnClickListener match = new DialogInterface.OnClickListener() {+ @Override+ public void onClick(DialogInterface dialog, int which) {+ Xlog.d(TAG, "click match button, save WifiDisplay and auto connect enabled " + + " deviceAddress: " + display.getDeviceAddress());+ Settings.System.putString(getActivity().getContentResolver(),+ Settings.System.DONGLE_NAME, display.getDeviceAddress()); } }; AlertDialog dialog = new AlertDialog.Builder(getActivity()) .setCancelable(true) .setTitle(R.string.wifi_display_options_title) .setView(view)+ .setNeutralButton("match", match) .setPositiveButton(R.string.wifi_display_options_done, done) .setNegativeButton(R.string.wifi_display_options_forget, forget) .create(); /// frank: add for dongle pair end @}
4) 引用,当数据发生变化的时候更新,可以在不同的线程中:
+ void init() {+ mMatchedDeviceMac = Settings.System.getString(mContext.getContentResolver(),+ Settings.System.DONGLE_NAME);+ Log.d(TAG, " DONGLE_NAME onInit mMatchedDeviceMac = " + mMatchedDeviceMac);+ //resolver.unregisterContentObserver(mBrightnessObserver);+ } + private void onMatchedDongleChanged() {+ Log.d(TAG, "DONGLE_NAME onMatchedDongleChanged " + "");+ mMatchedDeviceMacOld = mMatchedDeviceMac;+ mMatchedDeviceMac = Settings.System.getString(mContext.getContentResolver(),+ Settings.System.DONGLE_NAME);+ Log.d(TAG, " DONGLE_NAME onMatchedDongleChanged dongle_name = " + mMatchedDeviceMac);+ }+ private ContentObserver mMatchedDongleObserver = new ContentObserver(new Handler()) {+ @Override+ public void onChange(boolean selfChange) {+ onMatchedDongleChanged();+ }+ };
0 0
- 利用Setting Provider添加保存数据项
- 利用Setting Provider添加保存数据项
- jqgrid 动态添加数据项
- DataGrid数据项的手工添加
- dropdownlist 下拉列表绑定再添加数据项
- javascript为下拉列表添加数据项
- android多媒体数据库添加音视频数据项
- Setting up a Custom Membership Provider
- setting数据库添加一项
- Setting添加选项方法
- 如何添加Content Provider
- 添加Action Provider
- android开发--详解ListView,动态添加,删除Adapter中的数据项
- Installing a Search Provider and Setting the Default研究
- 利用provider获取系统联系人
- c# setting的数据保存路径
- easyui行编辑:利用append row添加行,直接在行中编辑,ajax提交保存
- easyui行编辑:利用appendrow添加行 直接在行中编辑 ajax提交保存
- 浅谈redis数据库的键值设计
- EasyMock问题总结
- 深入分析Volatile的实现原理
- sql常用函数
- Set Matrix Zeroes
- 利用Setting Provider添加保存数据项
- 读取文件
- java调用 Myeclipse用jax-ws创建的webservice具体方法(三)
- 基于注解的springmvc
- 17. 微软面试题:用最快的方法计算出 Fibonacci数列中的第n项
- Python正则表达式
- 关于 Java 中 finally 语句块的深度辨析(http://www.ibm.com/developerworks/cn/java/j-lo-finally/)
- ios各种地图的跳转并导航
- SharePoint 2010 at work--第一章节--SharePoint 成熟模型