关于run-as
run-as是Android系统中的一个小应用,可以辅助我们进行Android程序的开发。
我们在开发Android应用的时候,有的时候希望能获取到保存到手机盘应用私有目录/data/data/com.packagename下的数据来验证开发的应用是否达到预期结果,或者获取写到私有目录的log日志文件来进行debug工作。
但是在没有root权限的手机中,我们是无法直接使用adb shell来获取到/data/data/com.packagename下的数据,因为我们没有这个目录的访问权限。
这个时候,run-as程序就可以派上用场了。
进入data/data目录,然后执行run-as packagename即可。
adb shell下查看sqlite数据库
有时需要查看应用的本地数据库是否改变,一般可以使用SqliteStudio来查看(需要把xx.db文件导出来).现在记录一下如何在adb shell
下面查看
sqlite 数据库的内容.
Android 把数据都存在在/data/data/下面.如果我们需要查看那个应用的数据库内容,就进入到这个应用的包名的目录.然后进入里面的
databases目录,使用ls目录查看数据库文件的名称,再使用sqlite3相关的目录操作就可以了.
具体参考下面的例子:
adb shell
cd data/data/com.android.providers.settings
cd databases 进入目录
ls 显示文件,会发现xxx.db文件,这个例子会看到settings.db这个文件
sqlite3 settings.db 执行到这里命令行会变成sqlite> 开头的,这是表示已经打开了settings.db 这
个数据库文件,后面就可以去查询修改数据了
sqlite>.help 这个命令让我们看到许多命令
sqlite> .exit 命令退出sqlite,返回到#提示符。
sqlite>.tables 查看所有表.
实际我们会看到下面这些表
android_metadata bookmarks secure
bluetooth_devices global system
sqlite> select * from secure;
注意这里要添加分号,这里就会列出表secure 的全部内容了,但是数据是以下面的形式显示的.
如果需要显示的好看一点,可以执行下面的命令
sqlite> .mode column 显示的列会对齐
sqlite>.header on 显示的时候会在顶部显示列的名称
sqlite> .mode insert secure
在插入模式下,被子格式化为看起来像SQL INSERT语句的样式。你可以用插入模式来产生文件(便于)以后用于不同数据库的输入。
当指定插入模式时,你必须给定一个特定参数就是要插入的表名

sqlite> update secure set value="1" where _id=1; 修改数据
sqlite> delete from secure where name="lock_screen_show"; 删除数据