以root身份访问adb的权限:无法访问数据库

时间:2016-09-13 14:55:07

标签: android sqlite shell adb root

所以我做了一个基本的android应用程序,使用Async在SQLite数据库中插入数据,我想查看这个数据库及其包含的表。 android监视器不允许我操作数据文件,所以我尝试使用命令行:

C:\users\user\AppData\Local\Android\sdk\platform-tools>adb root

然后我收到此消息:adb unable to connect for root : protocol fault (couldn't read status): connection reset by peer 我也试过没有以root身份连接:

adb -s <device code> shell
shell@m0:/ $ /data/data/com.example.user.myapplication/databases/mydb.db

但它给了我这样的信息:

can't execute : permission denied

我试图运行此命令:

C:\Users\user\AppData\Local\Android\sdk\platform-tools>adb shell

打开shell时我使用了Super User命令:

shell@m0 :/ $ su

它以root身份成功连接:

root@m0:/ #

尽管如此,当我想访问数据库时,仍然会收到权限被拒绝的消息。我没有选择。

我应该指出我的Android设备已植根。

2 个答案:

答案 0 :(得分:0)

你可以:

1)使用以下命令获取数据库:adb pull /data/data/com.example.user.myapplication/databases/mydb.db

2)启动&lt; android sdk path&gt; \ platform-tools \ sqlite3 mydb.db并在其中使用SQL命令(例如SELECT * FROM table1)

答案 1 :(得分:-1)

我刚刚发现如何克服权限被拒绝的问题并获得对数据库的访问权限。 实际上,我一直在做的问题是,我试图访问具有仅执行权限而不是读取和/或写入的文件。您可以通过Android设备监视器或在adb shell中键入此命令来查看权限类型:ls -l 因此,您需要做的是将权限类型从仅执行更改为读/写/执行,这由此命令完成:chmod 777 /data 实际上你需要从/ data到/data/data//databases/dbname.db chmod 777每个目录,以便你可以访问数据库并将其拉入计算机的目录。 请参阅本文中的完整文档:http://www.codeproject.com/Articles/825304/Accessing-internal-data-on-Android-device 我希望这可以帮助你。 不要忘记我是以root身份连接到adb shell(通过root我的android设备并在超级用户模式下执行adb shell)。