说到安卓源码开发,不得不提强大的sqlite3工具,user版是没有这个的,编好的eng版本会在out/target/product/xxx/system/xbin生成sqlite3,如果你的user可以root,把sqlite3 push到手机的system/xbin,同样也可以操作。
例如,我现在要默认launcher的第一页布局里的app,需要查询app启动的包名类名。连usb,adb shell进入手机,cd data/data ,然后ls ,找到对应的launcher类名,比如我的launcher是cn.sh.hct.launcher3,我就cd cn.sh.hct.launcher3/databases
root@PL-U6:/data/data/cn.sh.hct.launcher3/databases # ls
launcher.db
launcher.db-journal
root@PL-U6:/data/data/cn.sh.hct.launcher3/databases # sqlite3 launcher.db
sqlite> .table //输入.table会查看有哪些table
android_metadata favorites workspaceScreens
launcher的首页就在favorites表里,然后查询这张表select * from favorites; 注意,一定要";"结束
然后就会得到你想要的
17|百度|#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.baidu.searchbox/.MainActivity;end|-100|2|1|0|1|1|0|-1||0|||||||1420041646692|0|0
18|百度地图|#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.baidu.BaiduMap/com.baidu.baidumaps.WelcomeScreen;end|-100|2|2|0|1|1|0|-1||0|||||||1420041647442|0|0
19|电子邮件|#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.android.email/.activity.Welcome;end|-100|2|3|0|1|1|0|-1||0|||�PNG
||||1420041720485|0|0
20|日历|#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.android.calendar/.AllInOneActivity;end|-100|2|4|0|1|1|0|-1||0|||�PNG
||||1420041707618|0|0
21|省电管理|#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.hct.powersaver/.PowerSaverActivity;end|-100|2|0|1|1|1|0|-1||0|||||||1420041648291|0|0
22|时钟|#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.android.deskclock/.DeskClock;end|-100|2|1|1|1|1|0|-1||0|||||||1420041648407|0|0
23|手机管家|#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.tencent.qqpimsecure/com.tencent.server.fore.QuickLoadActivity;end|-100|2|2|1|1|1|0|-1||0|||||||1420041648602|0|0
24|搜狗输入法|#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.sohu.inputmethod.sogou/.SogouIMELauncher;end|-100|2|3|1|1|1|0|-1||0|||||||1420041648756|0|0
25|搜索|#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.android.quicksearchbox/.SearchActivity;end|-100|2|4|1|1|1|0|-1||0|||||||1420041648844|0|0
26|文件管理|#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.hct.fileexplorer/.FileExplorerActivity;end|-100|2|0|2|1|1|0|-1||0|||||||1420041648933|0|0
27|应用宝|#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.tencent.android.qqdownloader/com.tencent.assistant.activity.SplashActivity;end|-100|2|1|2|1|1|0|-1||0|||||||1420041649025|0|0
28|掌阅iReader|#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.chaozh.iReaderFree15/com.chaozh.iReader.ui.activity.WelcomeActivity;end|-100|2|2|2|1|1|0|-1||0|||||||1420041649118|0|0
如果你觉得这样麻烦,可以用Sqlite database Browser 工具查看,事先把launcher.db pull到linux上,然后通过Sqlite database Browser 工具打开
由于搞Rom定制,会遇到许多需要默认打开的,这时我们就可以通过sqlite3来搞定
例如,我现在需要默认打开开发者选项,于是进入/data/data/com.android.providers.settings/databases
其中,com.android.providers.settings是SettingProvider的包名,很多默认打开关闭的都是在这个里面进行的,.table会发现有四张表
sqlite> .table
android_metadata bookmarks secure
bluetooth_devices global system
select * from global;
查询global会发现development_settings_enabled|1,此时我手机操作关闭开发者选项,会发现development_settings_enabled|0,然后如果需要默认打开开发者选项,我们就只需在frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
loadGlobalSettings(SQLiteDatabase db)//由于在Global表里,所以在loadGlobalSettings方法里做默认
loadBooleanSetting(stmt, "development_settings_enabled",R.bool.development_enabled);//我这里加了个config开关
由此,大功告成了,怎么样,sqlite3很强大吧