【问题标题】:Access permission in adb as root : can't access database以 root 身份访问 adb 中的权限:无法访问数据库
【发布时间】:2017-01-21 05:38:31
【问题描述】:

所以我制作了一个基本的 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@m0 :/ $ su

它以root身份成功连接:

root@m0:/ #

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

我应该指出我的安卓设备已经root了。

【问题讨论】:

  • 数据库文件不是可执行文件因此can't execute : permission denied
  • 那么我应该如何访问数据库?

标签: android sqlite shell adb root


【解决方案1】:

你可以:

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

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

【讨论】:

  • 如果不使用 chmod 命令更改权限,则无法拉取数据库。不过还是谢谢
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2012-05-03
    • 2012-10-22
    • 2013-06-29
    • 1970-01-01
    • 2021-08-03
    • 2011-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多