SettingsProvider 之 DatabaseHelper

转载请注明出处:http://blog.csdn.net/droyon/article/details/35558375

1、只为所有者创建global表。

// Only create the global table for the singleton 'owner' user
        //只为所有者创建global table。
        if (mUserHandle == UserHandle.USER_OWNER) {
            createGlobalTable(db);
        }

2、//如果我们正在加密设备,只能运行"核心"应用程序。 onlyCore为true

        if (!onlyCore) {
            loadBookmarks(db);
        }

3、在Settings.db的upgradeVersion为26时,创建了Secure表。在upgradeVersion为27、52、55时,将部分配置项转移到secure中。

upgradeVersion = 70时,更新bookmarks

4、在Settings.db的upgradeVersion = 82时,创建了Global表。

// Move to per-user settings dbs

在Settings.java中创建moveToSystem或者moveToSecure,通过SettingsProvider,传到DatabaseHelper中。

upgradeVersion = 84、87,89、90、93时,从secure中移植到Global中。

upgradeVersion = 85、88、90、91、93时,从System中移植到Global中。

5、<fraction name="def_window_animation_scale">100%</fraction>

6、在SettingsProvider中定义变量,注意前缀和后缀都很重要,切记。

根据搜索中的前缀,将符合前缀规格的项移植到Secure中。

private void movePrefixedSettingsToNewTable(
            SQLiteDatabase db, String sourceTable, String destTable, String[] prefixesToMove) {
        SQLiteStatement insertStmt = null;
        SQLiteStatement deleteStmt = null;

        db.beginTransaction();
        try {
            insertStmt = db.compileStatement("INSERT INTO " + destTable
                    + " (name,value) SELECT name,value FROM " + sourceTable
                    + " WHERE substr(name,0,?)=?");
            deleteStmt = db.compileStatement(
                    "DELETE FROM " + sourceTable + " WHERE substr(name,0,?)=?");

            for (String prefix : prefixesToMove) {
                insertStmt.bindLong(1, prefix.length() + 1);
                insertStmt.bindString(2, prefix);
                insertStmt.execute();

                deleteStmt.bindLong(1, prefix.length() + 1);
                deleteStmt.bindString(2, prefix);
                deleteStmt.execute();
            }
            db.setTransactionSuccessful();
        } finally {
            db.endTransaction();
            if (insertStmt != null) {
                insertStmt.close();
            }
            if (deleteStmt != null) {
                deleteStmt.close();
            }
        }
    }

SettingsProvider 之 DatabaseHelper

时间: 2024-10-14 06:36:20

SettingsProvider 之 DatabaseHelper的相关文章

修改默认输入法

[   如何修改默认输入法? [Solution] 一.适用于ICS(Android V4.0)之前的版本: 1. 安装需要用的默认输入法(.apk)到system/app 2. 修改文件 frameworks/base/packages/SettingsProvider/res/values/defaults.xml <string name="default_input_method" translatable="false">默认输入法 ID<

SettingsProvider 它SettingsCache

转载请注明出处:http://blog.csdn.net/droyon/article/details/35558437 SettingsCache,如指出,SettingsProvider缓冲.这将缓冲所有当前请求访问key值及其value.此缓冲区处在内存中,读取效率较高. SettingsProvider支持多用户概念,每一个用户都有至少三张表(System.Secure).每一张表都存在一个SettingsCache. 1.在手机启动时,会将SettingsProvider相应的数据库中

Android默认输入法语言的修改以及SettingsProvider作用

Android源码中默认的有三种输入法:英文,中文,日文.对应的工程代码路径为:<android_root>/packages/inputmethods/LatinIME/<android_root>/packages/inputmethods/OpenWnn/<android_root>/packages/inputmethods/PinyinIME/ 一般情况下,默认都是选择的LatinIME输入法,但是Android系统默认都是选择系统语言作为输入法,比如我们要用

SettingsProvider 之SettingsCache

转载请注明出处:http://blog.csdn.net/droyon/article/details/35558437 SettingsCache,此类注明了SettingsProvider的缓冲.会缓冲所有的当前请求访问的key值及其value.此缓冲区处在内存中,读取效率较高. SettingsProvider支持多用户概念,每个用户都有至少三张表(System.Secure),每一张表都存在一个SettingsCache. 1.在手机启动时,会将SettingsProvider对应的数据

SettingsProvider之增删改查

转载请注明出处:http://blog.csdn.net/droyon/article/details/35558697 当delete或者update时,需要清空缓冲区并重新加载数据. 1.invalidateCache()//得到当前用户的SettingsCache,remove所有. public SettingsCache cacheForTable(final int callingUser, String tableName) { if (TABLE_SYSTEM.equals(ta

Settings中的xml中的值与SettingsProvider中default.xml中的值的区别

最近在看Settings中的一个默认值的时候,发现有两个地方使用,有点疑问. 这两个defaultval有啥区别? ./res/xml/sound_settings.xml:109 104     <CheckBoxPreference 105             android:key="sound_effects" 106             android:title="@string/sound_effects_enable_title" 10

SettingsProvider之Settings.System(Secure)内部类

转载请注明出处:http://blog.csdn.net/droyon/article/details/35558783 SettingsProvider采用了双缓冲,我们前面说过SettingsProvider中存在SettingsCache缓冲区,那么在Settings.java中还存在另外一个缓冲区,它就是NameValueCache. 1. NameValueTable用于描述SettingsProvider的数据表,封装了putString方法. /** * Common base f

Winform开发框架之参数配置管理功能实现-基于SettingsProvider.net的构建

在较早时期,我写过一篇文章<结合Control.FirefoxDialog控件,构造优秀的参数配置管理模块>,介绍过在我的Winform框架基础上集成的参数配置模块功能,但是参数模块的配置管理感觉还不够灵活,于是一直在寻找一个较好的替代者,用来结合FireFoxDialog界面一并展现,期间仔细研读过好几篇Codeproject网站上的关于配置管理的文章,但是总是觉得不够灵活或者简便.本文主要针对结合FireFoxDialog参数配置界面组件和SettingsProvider.net技术,实现

Android默认输入法勾选多国语言,并默认其中一种语言

1.首先在设备上调整输入法 设置>语言输入法>Android键盘(AOSP),在输入语言里勾选要选择的语言,比如选"英语(美国)"和"西班牙文"两种: 2.选择系统输入法的默认语言(默认为两种语言中的"西班牙文") 打开一个能能调出输入法的应用,下拉通知栏里,"选择输入法"调整为"西班牙文" 3.查看Setting数据库文件 adb pull data/data/com.android.prov