我在手机上开发时遇到了访问数据库的问题。每当我执行
cd /data/data/com.mycompck/databases
然后运行ls
我得到:"opendir failed, Permission denied"
或者当我输入sqlite3
时,我得到:"sqlite3: permission denied"
我做错了什么?
是否有一些应用程序可以帮助我获取内容解析器值和/或SQLite数据库的人工视图?
答案 0 :(得分:16)
从以下帖子中查看我的答案:Why do I get access denied to data folder when using adb?
从API级别8(Android 2.2)开始,如果将应用程序构建为可调试的,则可以使用shell
run-as
命令将命令或可执行文件作为 特定用户/应用程序或只需切换到您的UID
应用程序,以便您可以访问其data
目录。
所以基本上你需要进行调试构建(每当你从Android Studio启动应用程序时都是automatically,除非你请求发布版本)并运行以下命令:
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
答案 1 :(得分:1)
要回答问题的第一部分,请查看this answer。基本上,您的手机需要具有root访问权限,并且您需要以root模式运行adb(使用“adb root”)。
至于第二部分,我使用SQLite Database Browser来查看我的SQLite dbs(尽管只有当db在我的计算机上时才会这样;不知道任何设备上的浏览器)。我不知道如何获得内容解析器的人工视图。
答案 2 :(得分:0)
您必须是root用户才能访问任何数据库文件。因此,您可以在手机上获取root权限(在Google上查找信息)或仅从模拟器调试数据库(始终为您提供root访问权限)。
再见!
答案 3 :(得分:0)
查看和管理Android应用数据库的最佳方法是使用此库https://github.com/sanathp/DatabaseManager_For_Android
它是一个单独的java活动文件,只需将java文件添加到源文件夹即可查看应用数据库中的表,更新,删除,向表中插入行。从应用程序中获取所有内容。
开发完成后,从你的src文件夹中删除java文件。
它给了我很多帮助。希望它也可以帮到你。
您可以在此处查看1分钟演示:http://youtu.be/P5vpaGoBlBY
答案 4 :(得分:-1)
我已经对此进行了一些阅读,并且访问移动数据库文件似乎非常麻烦。
看看这个。使用它,您可以在应用程序内查看数据库。 Database Manager
对我来说这很好。这有点取决于你计划做什么。
希望它有所帮助。