我在手机上开发时遇到了访问数据库的问题.每当我执行
cd /data/data/com.mycompck/databases
然后运行ls
我得到:"opendir failed, Permission denied"
或者每当我输入时,sqlite3
我得到:"sqlite3: permission denied"
我究竟做错了什么?
是否有一些应用程序可以帮助我获得内容解析器值和/或SQLite数据库的人工视图?
从以下主题检查我的答案:为什么在使用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
但请注意,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