10

我在手机上开发时无法访问数据库。每当我执行

cd /data/data/com.mycompck/databases

然后运行ls我得到:"opendir failed, Permission denied"

或者每当我输入时,sqlite3我都会得到:"sqlite3: permission denied"

我究竟做错了什么?

是否有一些应用程序可以帮助我获得内容解析器值和/或 SQLite 数据库的人性化视图?

4

5 回答 5

17

从以下线程检查我的答案:为什么我在使用 adb 时拒绝访问数据文件夹?

从 API 级别 8 (Android 2.2) 开始,如果您将应用程序构建为可调试的,您可以使用 shellrun-as命令以特定用户/应用程序的身份运行命令或可执行文件,或者只是切换到UID应用程序的,以便您可以访问其data目录.

因此,基本上您需要进行调试构建(每当您从 Android Studio 启动应用程序时都会自动构建,除非您请求发布构建)并运行以下命令:

run-as com.mycompck
cd /data/data/com.mycompck/databases
ls
sqlite3 ./yourdatabase.db

但是请注意,sqlite3默认情况下,许多手机上不存在二进制文件。因此,您可能需要在某个地方下载它(例如,从http://shortfuse.org/的 SuperOneClick 存档),保存在 SD 卡上并使其可执行(虽然这有点棘手),例如:

run-as com.mycompck
cd /data/data/com.mycompck/
cat /sdcard/sqlite3 >./sqlite3
chmod 744 ./sqlite3
./sqlite3 ./databases/yourdatabase.db
于 2011-12-08T15:39:31.720 回答
1

要回答您问题的第一部分,请查看此答案。基本上,您的手机需要具有 root 访问权限,并且您需要在 root 模式下运行 adb(使用“adb root”)。

至于第二部分,我使用SQLite 数据库浏览器来查看我的 SQLite 数据库(尽管只有当数据库在我的计算机上时;不知道任何设备上的浏览器)。我不知道有什么方法可以让内容解析器获得人性化的视图。

于 2010-05-11T14:43:20.287 回答
0

您必须是 root 才能访问任何数据库文件。因此,您可以在手机上获取 root(在 Google 上查找信息)或仅从模拟器调试数据库(始终为您提供 root 访问权限)。

再见!

于 2010-05-11T14:47:19.623 回答
0

查看和管理您的 android 应用程序数据库的最佳方法是使用此库https://github.com/sanathp/DatabaseManager_For_Android

它是一个单一的 java 活动文件,只需将 java 文件添加到您的源文件夹中,您就可以查看应用程序数据库中的表、更新、删除、向表中插入行。应用程序中的所有内容。

开发完成后,从您的 src 文件夹中删除 java 文件。

它帮助了我很多。希望它也能帮助你。

您可以在此处查看 1 分钟演示:http: //youtu.be/P5vpaGoBlBY

于 2014-10-02T19:37:28.587 回答
-1

我已经对此进行了一些阅读,并且访问您的移动数据库文件似乎很麻烦。

看看这个。有了这个,你可以在你的应用程序中查看你的数据库。数据库管理器

对我来说,这很好。当然,这也取决于您打算做什么。

希望能帮助到你。

于 2017-05-18T10:28:37.383 回答