在Android手机上开发时如何访问数据库?

Pen*_*m10 9 sqlite android adb

我在手机上开发时遇到了访问数据库的问题.每当我执行

cd /data/data/com.mycompck/databases

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

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

我究竟做错了什么?

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

Ido*_*lon 16

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

从API级别8(安卓2.2)开始,如果您构建应用程序的可调试,你可以使用shell run-as命令来运行一个命令或执行特定的用户/应用程序或只需切换到该UID应用程序,让您可以访问它的data目录.

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

run-as com.mycompck
cd /data/data/com.mycompck/databases
ls
sqlite3 ./yourdatabase.db
Run Code Online (Sandbox Code Playgroud)

但请注意,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
Run Code Online (Sandbox Code Playgroud)


Dan*_*Lew 1

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

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

  • 向您的应用程序添加导出或备份功能,将数据库复制到 SD 卡。 (4认同)