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

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

2015-09-18 10:35 573 查看
    说到安卓源码开发,不得不提强大的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很强大吧
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: