现在的位置: 首页 > 综合 > 正文

android的系统属性设置和应用

2013年10月24日 ⁄ 综合 ⁄ 共 3589字 ⁄ 字号 评论关闭

1. android系统跑起来后,进入以下目录,查看数据库。
cd  /data/data/com.android.providers.settings/databases

sh-4.2# pwd
/data/data/com.android.providers.settings/databases
sh-4.2#
sh-4.2# sqlite3 settings.db
SQLite version 3.6.22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>
sqlite> .tables
android_metadata   bookmarks          system           
bluetooth_devices  secure           
sqlite>
sqlite> .dump secure
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE secure (_id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT UNIQUE ON CONFLICT REPLACE,value TEXT);
INSERT INTO "secure" VALUES(1,'bluetooth_on','0');
INSERT INTO "secure" VALUES(2,'data_roaming','0');
INSERT INTO "secure" VALUES(3,'install_non_market_apps','0');
INSERT INTO "secure" VALUES(4,'location_providers_allowed','gps');
INSERT INTO "secure" VALUES(5,'assisted_gps_enabled','1');
INSERT INTO "secure" VALUES(6,'network_preference','1');
INSERT INTO "secure" VALUES(7,'usb_mass_storage_enabled','1');
INSERT INTO "secure" VALUES(8,'wifi_on','0');
INSERT INTO "secure" VALUES(9,'wifi_networks_available_notification_on','1');
INSERT INTO "secure" VALUES(10,'preferred_network_mode','0');
INSERT INTO "secure" VALUES(11,'cdma_cell_broadcast_sms','1');
INSERT INTO "secure" VALUES(12,'preferred_cdma_subscription','1');
INSERT INTO "secure" VALUES(13,'mock_location','1');
INSERT INTO "secure" VALUES(14,'backup_enabled','0');
INSERT INTO "secure" VALUES(15,'backup_transport','android/com.android.internal.backup.LocalTransport');
INSERT INTO "secure" VALUES(16,'mount_play_not_snd','1');
INSERT INTO "secure" VALUES(17,'mount_ums_autostart','0');
INSERT INTO "secure" VALUES(18,'mount_ums_prompt','1');
INSERT INTO "secure" VALUES(19,'mount_ums_notify_enabled','1');
INSERT INTO "secure" VALUES(20,'android_id','3631930e79a234e0');
INSERT INTO "secure" VALUES(23,'enabled_input_methods','com.android.inputmethod.pinyin/.PinyinIME:com.android.inputmethod.latin/.LatinIME:com.baidu.padinput/.ImeService');
INSERT INTO "secure" VALUES(24,'default_input_method','com.android.inputmethod.pinyin/.PinyinIME');
INSERT INTO "secure" VALUES(25,'ethernet_on','1');
INSERT INTO "secure" VALUES(26,'wifi_ap_on','0');
INSERT INTO "secure" VALUES(27,'adb_enabled','1');
INSERT INTO "secure" VALUES(28,'throttle_reset_day','16');
INSERT INTO "secure" VALUES(29,'device_provisioned','1');
INSERT INTO "secure" VALUES(30,'wifi_num_allowed_channels','13');
INSERT INTO "secure" VALUES(31,'disabled_system_input_methods','');
CREATE INDEX secureIndex1 ON secure (name);

COMMIT

sqlite> .quit

退出 sqlite.

那这些属性是如何写进数据库的?

文件位置:

frameworks/base/packages/SettingsProvider/src/com/Android/providers/settings/DatabaseHelper.java
frameworks/base/packages/SettingsProvider/res/values/defaults.xml

例如:不让手机锁屏的修改:

(1) frameworks/base/packages/SettingsProvider/res/values/defaults.xml
可以找到R.integer.def_screen_off_timeout的定义。
<integer name="def_screen_off_timeout">60000</integer>

发现默认值为60000ms,也就是60s。我们只需要把这个参数改为-1。然后重新编译SettingsProvider模块,就可以了。

(2)锁屏的代码在LockScreen.java中,找到设置锁屏功能开关的位置。代码位于:
frameworks/policies/base/phone/com/Android/internal/policy/impl/KeyguardViewMediator.java
该文件中有一个变量定义如下:
    /**
     * External apps (like the phone app) can tell us to disable the keygaurd.
     */
    private boolean mExternallyEnabled = true;
mExternallyEnabled是用来管理是否开启屏幕锁的关键。默认值是打开屏锁。所以设置变量,给其初始化为 false. 开机就不会锁屏。

另外,也可以在launcher模块启动的时候,调用setKeyguardEnabled方法,关闭锁屏功能。

2.SystemProperties

创建与修改android属性用Systemproperties.set(name, value),获取android属性用Systemproperties.get(name),需要注意的是android属性的名称是有一定的格式要求的,前缀必须用system\core\init\property_service.c中定义的前缀 ,进行系统属性设置的程序也必须有system或root权限

如果我们要添加一个property:例如: abc

路径:system/core/rootdir/int.rc

在on post-fs-data 目录下

 setproppersist.sys.abc1   //persist.sys
前缀名;
1为初始值

PS:不同前缀名权限不同,这里就不一一说明;还有为什么要加载on post-fs-data目录下,这和int.rc的语法有关。


抱歉!评论已关闭.