如何在我的电脑上获取我的应用程序 (Android) 存储的文件?

How do I get the files I stored with my app (Android) on my PC?

我在为 Google Nexus 5 编写的应用程序的内部(私有)存储上创建了 json 个文件。

我被告知,这是所谓的私人应用程序 space,我无法从我的 PC 访问它,除非我根 phone(不是一个选项)或使用工作-通过 adb 进行备份。

我试图通过 adb shell 获取访问权限。 但是每当我尝试访问`数据?目录 我被告知我没有访问该目录的权限。

如何访问此目录和我的文件?

Note: I also was told that I should try to use Environment.getExternalStorageState() instead of writing into the private app space. But when I try to write to /storage/emulated/0/ it just won't work either.

我不关心使用哪种方法,我只需要尽快访问我在 PC 上创建的文件。

您可以使用 Android 设备监视器访问私有应用程序空间、root 设备和模拟器(默认情况下,包括 Genymotion 和 AVD 在内的所有模拟器都是 root 的)

要将文件写入外部存储,请不要忘记在 AndroidManifest.xml 中声明权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

由于此权限在 Android 6.0 中被归类为危险权限,您应该明确请求访问它。 More on permission.

如果您不能或不想对您的物理设备进行 root phone,您可以将文件写入外部存储并在您的 PC 上访问它们。

如果要在SDCard上写文件,需要先获得SDCard上写数据的权限。

获取权限的方法如下:

AndroidManifest.xml

<manifest ...>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    ...
</manifest>

如果你想支持Marshmallow(API-23)那么你需要获得这个运行时权限。

对于那个 ref link : https://developer.android.com/training/permissions/requesting.html

First get runtime permission using this command.

adb shell pm grant com.package.app android.permission.<PERMISSION>

例子

adb shell pm grant com.package.app android.permission.CALL_PHONE

然后您就可以访问存储了。

这完成了工作:

adb shell
run-as PACKAGE.NAME
chmod 771 files
cp files/*.json /sdcard/<SOME_DIR>
adb pull /sdcard/<SOME_DIR> <SOME_LOCAL_DIR>

其他对我也有效的可能解决方案:

adb backup -noapk PACKAGE.NAME
dd if=backup.ab bs=24 skip=1|openssl zlib -d > backup.tar
tar -zxvf backup.tar