我将我的安卓设备连接到电脑并通过adb连接。我想做的是在没有root或su权限的情况下将文件从电脑复制到我的应用程序的内部存储 (/data/data/com.example.app/databases
)。首先,我将文件从电脑推送到我的安卓设备的/sdcard/
文件夹。
adb push database.sqlite /sdcard/
然后我想将该文件复制到我的应用程序的内部存储中。我可以成功地运行我的应用程序包并查看内部存储。
adb shell
$ run-as com.example.app
$ ls databases
这不会引起任何权限问题。如果我没有使用
run-as
,我也可以轻松查看/sdcard/
文件夹。adb shell
$ ls sdcard
问题在于,当我首次使用
run-as
时,我无法访问/sdcard/文件夹。而当我不使用run-as
时,我无法访问内部存储文件夹。因此,如果我执行run-as
,然后执行以下操作:cp /sdcard/database.sqlite /data/data/com.example.app/databases/
我收到了权限被拒绝的错误提示:
cp: /data/data/com.example.app/databases/database.sqlite: Permission denied
我也尝试使用dd,但是没有起作用:
dd if=/sdcard/database.sqlite of=/data/data/com.example.app/databases/
# output
dd: /sdcard/database.sqlite: Permission denied
我该如何解决这个问题?我既没有root访问权限,也没有超级用户(su
)。我认为我可以在没有root的情况下实现这一点,因为使用Android Studio设备文件浏览器,我成功地将数据库上传到了同一个Android设备中。我只是想使用命令行(Windows)来完成这个操作。
非常感谢您的帮助 :D
READ_EXTERNAL_STORAGE
,但是我没有在运行时请求它。这可能是问题所在吗? - Thanasis1101