我在手机上开发时无法访问数据库。每当我执行
cd /data/data/com.mycompck/databases
然后运行ls
我得到:"opendir failed, Permission denied"
或者每当我输入时,sqlite3
我都会得到:"sqlite3: permission denied"
我究竟做错了什么?
是否有一些应用程序可以帮助我获得内容解析器值和/或 SQLite 数据库的人性化视图?
从以下线程检查我的答案:为什么我在使用 adb 时拒绝访问数据文件夹?
从 API 级别 8 (Android 2.2) 开始,如果您将应用程序构建为可调试的,您可以使用 shell
run-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
要回答您问题的第一部分,请查看此答案。基本上,您的手机需要具有 root 访问权限,并且您需要在 root 模式下运行 adb(使用“adb root”)。
至于第二部分,我使用SQLite 数据库浏览器来查看我的 SQLite 数据库(尽管只有当数据库在我的计算机上时;不知道任何设备上的浏览器)。我不知道有什么方法可以让内容解析器获得人性化的视图。
您必须是 root 才能访问任何数据库文件。因此,您可以在手机上获取 root(在 Google 上查找信息)或仅从模拟器调试数据库(始终为您提供 root 访问权限)。
再见!
查看和管理您的 android 应用程序数据库的最佳方法是使用此库https://github.com/sanathp/DatabaseManager_For_Android
它是一个单一的 java 活动文件,只需将 java 文件添加到您的源文件夹中,您就可以查看应用程序数据库中的表、更新、删除、向表中插入行。应用程序中的所有内容。
开发完成后,从您的 src 文件夹中删除 java 文件。
它帮助了我很多。希望它也能帮助你。
您可以在此处查看 1 分钟演示:http: //youtu.be/P5vpaGoBlBY
我已经对此进行了一些阅读,并且访问您的移动数据库文件似乎很麻烦。
看看这个。有了这个,你可以在你的应用程序中查看你的数据库。数据库管理器
对我来说,这很好。当然,这也取决于您打算做什么。
希望能帮助到你。