如何使用adb将文件复制到可从PC访问的android目录

时间:2016-09-11 23:02:29

标签: android adb android-external-storage

如果您将Android设备连接到PC,您可以浏览文件和目录。可以使用Environment.getExternalStorage()获取此目录。您可以在应用程序中使用它并创建可访问的文件和目录。它工作正常。

在我的设备上,此路径看起来像/storage/emulated/0,如果我尝试adb push到此目录,我将获得访问被拒绝错误。是否可以使用adb将文件复制到与Windows资源管理器相同的文件夹中?

D:\...\tools>adb push ACCOUNTS.DB /storage/emulated/0
failed to copy 'ACCOUNTS.DB' to '/storage/emulated/0': Permission denied
58969 KB/s (606505 bytes in 0.010s)

我正在实施自动导入/导出,我希望在没有adb shell的情况下访问文件,以防出现任何问题。

目前使用变量$EXTERNAL_STORAGE作为解决方法,它适用于adb和应用程序。

设备:Asus Fonepad 7,Android 5.0,尝试过Genymotion Custom Tablet 6.0 - 正常工作。

2 个答案:

答案 0 :(得分:5)

尝试使用/sdcard/。虽然强烈建议不要在代码中执行此操作。这似乎是 adb 的唯一方法:

$ adb push somefile /storage/emulated/0/somefile
[100%] /storage/emulated/0/somefile
adb: error: failed to copy 'somefile' to '/storage/emulated/0/somefile': Read-only file system

$ adb push somefile /sdcard/somefile
[100%] /sdcard/somefile

顺便说一句,在我的设备上,他们没有相同的价值:Environment.getExternalStorage()指向/storage/emulated/0//sdcard指向/storage/emulated/legacy

答案 1 :(得分:2)

非常简单,内置存储在非root设备上不可用。正如bwt answer中提到的那样,您只需要将数据推送到SD卡:

adb push somefile /sdcard/somefile

从文件系统中检索文件时,您也会遇到一些问题。但是从调试应用程序中提取数据库的情况 - 您只需要通过chmod更改文件权限。 这里有一个有用的链接 - XDA guys about adb