Android源码开发之Sqlite3的广泛用途

    说到安卓源码开发,不得不提强大的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很强大吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值