android - 如何使用脚本查询android sqlite数据库

标签 android python perl sqlite adb

Android 将设置保存在数据库文件中,该文件为 /data/data/com.android.providers.settings/databases/settings.db

Android 使用sqlite3 作为数据库。我们可以使用adb 来管理数据库文件。我想知道是否有办法在 perl/python 脚本中运行所有这些命令来自动执行整个查询过程?

$adb shell 
$sqlite3 /data/data/com.android.providers.settings/databases/settings.db 

上述命令将打开设置数据库。然后你将进入sqlite3命令行。

首先检查数据库中存在多少个表。这里列出了结果。

sqlite> .tables

android_metadata   bookmarks          gservices        
bluetooth_devices  favorites          system  

我要获取的设置(例如volume_alarm)在“system”表中,一个.dump命令将列出表中的所有项目。

sqlite> .dump system
BEGIN TRANSACTION;
CREATE TABLE system (_id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT UNIQUE ON CONFLICT REPLACE,value TEXT);
INSERT INTO "system" VALUES(3,’volume_system’,’5′);
INSERT INTO "system" VALUES(4,’volume_voice’,’4′);
INSERT INTO "system" VALUES(5,’volume_alarm’,’6′);
.....
$ select value from system where name ='volume_alarm';
select value from system where name ='volume_alarm'
6
$.quit;

最佳答案

查询特定值:

adb shell sqlite3 /data/data/com.android.providers.settings/databases/settings.db "select value from 'system' where name = 'volume_alarm';"

或者从表中提取所有记录:

adb shell sqlite3 /data/data/com.android.providers.settings/databases/settings.db "select name, value from 'system';"

关于android - 如何使用脚本查询android sqlite数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16851774/

相关文章:

perl - 如何在 Perl 中从单个源生成两个文件?

android - AVD 不适用于 Android Studio - statvfs 快照错误

Android studio .gradle呈红色,如何修复?

android - 在Android-ndk中,如何在调用dlclose()时调用_fini()?

python - Altair 中的多列/行小平面环绕

Python Pika 和 RabbitMQ 连接发布

Perl 输出太多列

android - 从没有绑定(bind)的 Activity 中调用服务方法

python - "Field"和 "Fields"是 Django 还是 Python 中的保留字?

apache - 当文件被压缩时 Perl 上传失败