您的位置:首页 > 移动开发 > Android开发

android的系统属性设置和应用

2012-06-11 15:29 417 查看
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的语法有关。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: