将文件夹从 Android 应用程序复制到本地 Windows 目录
Posted
技术标签:
【中文标题】将文件夹从 Android 应用程序复制到本地 Windows 目录【英文标题】:Copy folder from Android app to local Windows directory 【发布时间】:2016-09-04 01:25:05 【问题描述】:我正在尝试使用 android Adb Command Prompt
将应用容器内的文件夹复制到本地 Windows 文件夹。该设备运行的是 Android 5.1.1,并且未植根。
adb pull
或 cp
无法正常工作。如何复制文件夹?
以下方法不起作用:
方法 1
adb shell
adb pull /data/data/DroidSample.DroidSample/files/MetroLog/MetroLogs C:/temp/test
错误:找不到设备
在 shell 内部你看不到 adb pull
。见here。
方法 2
DDMS 无法访问data
文件夹。
方法 3
adb shell
run-as DroidSample.DroidSample
cp /files/MetroLog/MetroLogs/ C:/temp/test
cp: /files/MetroLog/MetroLogs/: 没有这样的文件或目录
方法 4
adb shell
run-as DroidSample.DroidSample
cp /data/data/DroidSample.DroidSample/files/MetroLog/MetroLogs/ C:/temp/test
cp: /data/data/DroidSample.DroidSample/files/MetroLog/MetroLogs 是一个目录(未复制)。
This 也不起作用。
方法 5
adb shell
run-as DroidSample.DroidSample
chmod 777 /files/MetroLog/MetroLogs
exit
exit
adb pull /data/data/DroidSample.DroidSample/files/MetroLog/MetroLogs C:/temp/test
adb shell run-as DroidSample.DroidSample
chmod 700 /files/MetroLog/Metrologs
远程对象“/data/data/DroidSample.DroidSample/files/MetroLog/MetroLogs”不存在
所以this 也不起作用。
方法 6
adb shell
mkdir /sdcard/tmp
cp /data/data/DroidSample.DroidSample/files/MetroLog/MetroLogs /sdcard/tmp
cp:/data/data/DroidSample.DroidSample/files/MetroLog/MetroLogs:权限被拒绝
This 也不起作用。
方法 7
唯一成功的就是这个
adb exec-out run-as DroidSample.DroidSample cat "files/MetroLog/MetroLogs/Log - 20160509.log" > C:/temp/test/test.log
但是在这里我没有得到原始文件,而且我还必须知道确切的文件名。此外,我松开换行符,我必须为每个文件执行此操作。不是我想要的。
所以我的想法已经不多了。如何访问内部存储的文件并将其复制过来?
【问题讨论】:
试试看这个***.com/questions/20296713/how-send-data-throgh-wifi 这里有一个适合我的答案***.com/a/8650449/2449199。 【参考方案1】:你几乎解决了这个问题。由于这种存储是安全的,因此您需要执行一个额外的步骤。您需要将文件从安全位置复制到设备的 SD 卡。然后你可以通过usb或android pull将它复制到任何地方。这是我成功执行的命令序列。
adb shell
run-as DroidSample.DroidSample
cd shared_prefs
cp DroidSample.DroidSample_preferences.xml /sdcard/DroidSample.DroidSample_preferences.xml
exit
exit
adb pull /sdcard/DroidSample.DroidSample_preferences.xml C:/test/
就是这样。
我非常感谢您发布问题的方式。祝你好运。
【讨论】:
这应该被标记为答案.. 也适用于非 root 手机(虽然适用于应用程序的调试版本)。不适用于实时应用【参考方案2】:您正在尝试访问 /data android 设备的文件夹,该文件夹在 unrooted 设备中无法访问。
【讨论】:
Here 的问题是明确地访问 unrooted 设备的data
文件夹中的文件。我可以使用adb exec-out run-as com.packagename cat source > destination
访问data
文件夹中的文件。那为什么会这样呢?
它适用于模拟器。不在实际设备上。它永远无法在实际设备上运行。您和 adb 都没有 /data 分区的读取权限。查看我的答案。
再次在设备上尝试过,它可以工作。也许是因为 Debug 构建?
可能很好,但我对此表示怀疑。根据您最初的问题,您列出的任何方法都不起作用。无法授予您对数据分区的访问权限。
@testing 是的,这是因为调试版本【参考方案3】:
您正试图在实际的 android 设备上获得对 /data 分区的读取权限。即使 app 文件夹是你的,如果没有 root 访问权限,这样的事情是不可能的。由于读取 /data 分区的权限未授予且无法授予,除非您使用的是模拟器。在默认情况下开发人员具有管理员权限的模拟器上,您可以访问数据分区进行读写。在实际设备上你不能。不使用 adb,不使用 DDMS。
所以基本上来说,任何需要访问 /data 下的文件的东西都不起作用。无论您是 sue cp 命令还是 pull 命令。当您的内核读取以 /data/... 开头的路径的开头时,它会说:哎呀,不行。
【讨论】:
以上是关于将文件夹从 Android 应用程序复制到本地 Windows 目录的主要内容,如果未能解决你的问题,请参考以下文章
如何将选定的电子邮件从 android 联系人获取到应用程序? [复制]