`
java-mans
  • 浏览: 11416705 次
文章分类
社区版块
存档分类
最新评论

手动操作Android数据库

 
阅读更多
[First written by Steve Guo, please keep the mark if forwarding.]转载

Androidsaved settings in a database filewhich is/data/data/com.android.providers.settings/databases/settings.db. For some settings, Android does not support set them on the GUI. So we need find another way to set it. Here it is. I will use set "device_provisioned" as an example.

Android use sqlite3 as the database. So we can use sqlite3 to manage the database file.

adb shell

sqlite3 /data/data/com.android.providers.settings/databases/settings.db

注意:sqlite3有2个。一个是电脑上的,它位于android-sdk-windows\tools\sqlite3.exe,它用于电脑上;

还有一个位于android系统上(手机上),它才是用于Android系统的,对于后者你需要通过adb shell进入shell。

前者是window系统,后者是Linux系统,他们文件系统的表示方法不一样。

The above command will open the settings database. Then you will enter into sqlite3 command line.

First we can check how many tables existed in the database. Here lists the result.

sqlite> .tables
android_metadata bookmarks gservices
bluetooth_devices favorites system

The settings we try to set lies in "system" table, so then we list all items in the table to view the current table information.
sqlite>.dump system
BEGIN TRANSACTION;
CREATE TABLE system (_id INTEGER PRIMARY KEY AUTOINCREMENT,nameTEXT UNIQUE ON CONFLICT REPLACE,valueTEXT);
INSERT INTO "system" VALUES(3,'volume_system','5');
INSERT INTO "system" VALUES(4,'volume_voice','4');
INSERT INTO "system" VALUES(5,'volume_alarm','6');
INSERT INTO "system" VALUES(6,'mode_ringer','2');
INSERT INTO "system" VALUES(7,'vibrate_on','4');
INSERT INTO "system" VALUES(8,'mode_ringer_streams_affected','6');
INSERT INTO "system" VALUES(9,'mute_streams_affected','14');
INSERT INTO "system" VALUES(10,'dim_screen','1');
INSERT INTO "system" VALUES(11,'stay_on_while_plugged_in','0');
INSERT INTO "system" VALUES(12,'screen_off_timeout','60000');
INSERT INTO "system" VALUES(13,'airplane_mode_radios','cell,bluetooth,wifi');
INSERT INTO "system" VALUES(14,'airplane_mode_on','0');
INSERT INTO "system" VALUES(15,'bluetooth_on','0');
INSERT INTO "system" VALUES(16,'usb_mass_storage_enabled','1');
INSERT INTO "system" VALUES(17,'wifi_on','0');
INSERT INTO "system" VALUES(18,'wifi_networks_available_notification_on','1');
INSERT INTO "system" VALUES(19,'network_preference','1');
INSERT INTO "system" VALUES(20,'auto_time','1');
INSERT INTO "system" VALUES(21,'screen_brightness','102');
INSERT INTO "system" VALUES(23,'window_animation_scale','1');
INSERT INTO "system" VALUES(24,'transition_animation_scale','0');
INSERT INTO "system" VALUES(26,'data_roaming','0');
INSERT INTO "system" VALUES(27,'date_format','MM-dd-yyyy');
INSERT INTO "system" VALUES(30,'device_provisioned','0');
INSERT INTO "system" VALUES(31,'location_providers_allowed','gps');
INSERT INTO "system" VALUES(32,'install_non_market_apps','1');
INSERT INTO "system" VALUES(119,'ringtone','content://media/external/audio/media/11');
INSERT INTO "system" VALUES(243,'volume_music','15');
INSERT INTO "system" VALUES(244,'volume_music_last_audible','15');
INSERT INTO "system" VALUES(266,'volume_ring','7');
INSERT INTO "system" VALUES(267,'volume_ring_last_audible','7');
INSERT INTO "system" VALUES(274,'font_scale','1.0');
INSERT INTO "system" VALUES(275,'adb_enabled','0');
INSERT INTO "system" VALUES(276,'next_alarm_formatted','');
CREATE INDEX systemIndex1 ON system (name);
COMMIT;

如果我们只想看system表的内容,直接用SQL语句也就可以了 比如:

select * from system;

注意1sqlite3支持两种命令,一种是SQL命令,一种是非SQL命令,非SQL命令以"."作为前缀,比如".tables"命令。

所以所有不以"."为前缀的语句,都将做SQL进行解释,当时对于SQL语句你需要在末尾加上分号";"以表示SQL语句输入完成,

这时你输入的命令才开始才按照SQL语言进行执行。

注意2sqlite3的命令可以通过".help"语言来查看。

Pay attention to the first line about table information. The text marked with red will be used when writting SQL statements. Assume we want to set "device_provisioned" to 1, we can simply typethe following statementin the sqlite3 console.

sqlite>UPDATE "system" SET value='1' WHERE name='device_provisioned';

你可以输入 ".dump system"或select * from system;来检查修改后的值.


分享到:
评论

相关推荐

    Android数据库SQLite手动建库适合小白学习的代码清晰易懂

    Android数据库SQLite手动建库的代码页,适合小白学习分析Android代码。即便是刚刚接触的Android的学生,看里面的两行注释也能明白。 程序运行效果,在File Explore里面的Date/Date/<packageName>/database下会看到...

    Android数据库实验.docx

    Android数据库实验全文共7页,当前为第1页。Android数据库实验全文共7页,当前为第1页。实验报告 Android数据库实验全文共7页,当前为第1页。 Android数据库实验全文共7页,当前为第1页。 实验项目:Android数据库...

    android基本SQLite数据库操作的增删改查demo

    用SQLite写的类似一个手动添加,查询,删除,修改的一个停车位查询程序。里面包含新增汽车车牌,根据输入的车牌判别车辆是否有停车许可以及停放区域的查询!真的很有用,图标和界面全是自己设计的。

    安卓数据库的建立与使用

    安卓数据库的建立与使用 分别使用sqlite3工具和Android代码的方式建立SQLite数据库,数据库名称为test.db,并建立staff数据表,表内的属性值如下表所示

    Android-基于sqlite3的面向对象存储框架无缝版本迁移迭代无需手动维护数据库版本

    基于sqlite3的面向对象存储框架,无缝版本迁移迭代,无需手动维护数据库版本

    Android考研论坛SQLite数据库

    Android本地数据库,请手动导入项目 具体导入方法:https://blog.csdn.net/weixin_44870077/article/details/116430228?spm=1001.2014.3001.5501 项目:https://github.com/Qmotor/BigBlackBox

    Android代码-SqliteLookup

    在Android数据库相关开发中,我们是先把数据库导出来到PC上,或者手动写TestCase来查看表或者数据,这样颇为麻烦,影响了开发的效率。因此我们可以一开始把数据库放置到SD卡中,然后借助SqliteLookup来查看表和数据...

    android基站手动查询定位系统

    android基站手动查询定位系统,手动输入lac和cell,依靠强大的基站数据库,显示中文地址及在google地图上显示位置

    新版Android开发教程.rar

    这一联盟将会支持 Google 发布的 Android 手机操作系统或者应用软件,共同开发名为 Android 的 开 放源代码的移动系统。开放手机联盟包括手机制造商、手机芯片厂商和移动运营商几类。目前,联盟成员 数 量已经达到了...

    Android实现登录注册功能,含WebView(动态背景),Litepal(数据库存储),下载可本地完美运行

    Android实现登录注册功能,直接下载可以完美运行到本地,关键代码有注释,可以直接理解,并运用到自己本地,背景采用动态背景展示,背景采用星球转动背景,通过,Litepal数据库存储,可以查找用户,并对用户进行操作...

    android-db-migration:Android客户端库可帮助管理数据库迁移

    Android客户端库可帮助管理数据库迁移。 android-db-migration项目提供了一个库,可减轻在Android客户端中升级数据库架构的麻烦。 特征: 无缝升级多个架构版本 在单元测试中验证数据库架构升级的完整性(即:...

    Storm:Android SQLite 数据库管理器

    通过@Annotations 轻松创建表格通过@Annotations 轻松迁移在插入、更新和选择操作方面接近原生的 SQLite 速度无需手动解析 Cursors / 无需手动初始化 ContentValues 直接的 API 支持多个数据库文件任何对象都可以是...

    Android Studio项目天气预报

    其中LitePal用于对数据库进行操作,OkHttp用于进行网络请求,GSon用于解析数据,Glide用于加载和展示图片。项目中建立了三张表:province、city、county,分别用于存放省、市、县的数据。以上是该项目的三张表。

    Android-Banking-Application:Android 应用程序,将手动跟踪各种银行账户中的个人开支。 主要专注于构建数据库后端

    安卓银行应用Android 应用程序,将手动跟踪各种银行账户中的个人开支。 主要专注于构建数据库后端。

    RxQuery:一个用于使用RxJava访问数据库的Android库

    RxQuery RxQuery是一个非常简单的(102行代码)库,它向您的数据库层添加了RxJava功能。 该库不受任何ORM或直接SQL访问的限制。... 您可以根据应用程序的需要手动设置此延迟。 您还可以在RxQuery的主线程中使用立即

    极简智能的AndroidOrm框架MiniOrm-For-Android.zip

    纯java结构设计,通过接口的设计,将上层业务和实际操作数据库的部分进行分离,开发者可以在此基础上自行实现mysql等数据的支持。下面是java部分核心设计 接入类库: 在项目的程序目录build.gradle中加入 ...

    Android百度地图

    这个主要是对Android手机百度地图的一个小功能操作,例如利用Servlet操作MySql数据库,手动定位,地图标记等等的功能。

    Android帮助文档及一些资料打包放送

    [Android]手动触发OnClick事件 - 农民伯伯 - 博客园.mht357.93 KB [Android]文本框实现搜索和清空效果 - 农民伯伯 - 博客园.mht380.75 KB 新浪微博布局学习——活用RelativeLayout - 农民伯伯 - 博客园.mht453.32 KB...

    CTS android

     比较遗憾的是,Android并没有提供一个卸载 应用的命令,只能自己手动删除 :  adb shell  cd /data/app  rm app.apk  2、进入设备或模拟器的shell:  adb shell  通过上面的命令,就可以进入设备或...

    android图书馆实例

    本资源是引导大家做一个图书馆的源码打包文件,在做这个Android开发实例的过程中,...为了有更好的学习效果,其中很多功能我们手动实现,例如找到上一本与下一本,读取当前数据库内的信息。有问题可以在我下面留言回复

Global site tag (gtag.js) - Google Analytics