关于android 4.1的设置默认值的一些记录

来源:互联网 发布:如何在淘宝上找工作 编辑:程序博客网 时间:2024/05/16 09:49

    最近在设置Android 设置的一些预置默认值,感觉还是挺复杂的。最近又选择性失忆了,还是记一下。

   

    Android的设置的服务端是由SettingsProvider提供的,代码路径:frameworks/base/packages/SettingsProvider ,实际上这是个操作数据库的服务,并提供给设置的应用部分去调用,个人理解,可能描述不太对。下面分析代码均以 frameworks/base/packages/SettingsProvider 目录作为根目录。

    SettingsProvider的代码都在src/com/android/providers/settings目录下,有下面几个文件。

    DatabaseHelper.java  SettingsBackupAgent.java  SettingsHelper.java  SettingsProvider.java

    建立数据库,并加载默认设置值的是DatabaseHelper.java文件,今天只看这个文件。

    在文件里有这个函数:

     private void loadSettings(SQLiteDatabase db) {

        loadSystemSettings(db);


        loadSecureSettings(db);
    }

    这就是加载默认值的函数,实际上只是按照一些定义和变量来插入数据库记录而已,在里面可以发现有2种加载默认值的方式:

          1:     loadBooleanSetting(stmt, Settings.System.AIRPLANE_MODE_ON, R.bool.def_airplane_mode_on);
                  这个函数会去读资源里的默认值,这个资源的定义的路径在下面的文件里:

                   res/values/defaults.xml 

                   这个比较简单,就不做分析了,其实大部分的默认值都在这个文件里定义了。

          2:    loadSetting(stmt,Settings.System.SCREEN_OFF_TIMEOUT,SystemProperties.getInt("ro.rk.screenoff_time",

                  mContext.getResources().getInteger(R.integer.def_screen_off_timeout)));
                  这个函数首先会去读系统的属性,如果有值则使用这个值,如果没有则使用后面得到的值。后面的值其实就是第1种定义默认值的方式。

                  系统属性的定义在相关的device的device.mk文件里,下面是代码片段:

                  PRODUCT_PROPERTY_OVERRIDES += \
                  persist.sys.usb.config=mass_storage,adb \
                  persist.sys.strictmode.visual=false \
                  dalvik.vm.jniopts=warnonly \
                  ro.rksdk.version=RK30_ANDROID$(PLATFORM_VERSION)-SDK-v1.00.00 \
                  sys.hwc.compose_policy=6 \
                  ro.sf.fakerotation=true \
                  ro.sf.hwrotation=270 \
                  ro.rk.MassStorage=false \
                  wifi.interface=wlan0 \
                  ro.sf.lcd_density=120 \
                  ro.rk.screenoff_time=1800000 \
                 

                  


                 终上所述,系统设置的打部分默认值都在这2个地方可以更改。注意上面的persist.sys.usb.config=mass_storage,adb 这一行,是更改默认adb是否打开的代码,这在    SettingsProvider里没有定义,但是如果要打开adb,在persist.sys.usb.config=mass_storage,后面加上adb就可以,具体代码实现以后再做分析了。                  

0 0
原创粉丝点击