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

时间:2016-10-05 11:37:13

标签: java android android-studio adb google-nexus

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

有人告诉我,这是所谓的私人应用程序空间,我无法从我的PC访问,除非我要么手机(不是选项),要么通过adb进行备份来解决问题。

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

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

  

注意:我还被告知我应该尝试使用Environment.getExternalStorageState()而不是写入私人应用空间。但是,当我尝试写入/storage/emulated/0/时,它也无法正常工作。

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

4 个答案:

答案 0 :(得分:1)

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

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

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

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

如果您不能或您不想使用手机,您可以将文件写在外部存储设备上并在PC上访问它们。

答案 1 :(得分:1)

如果您想在SDCard上写文件,那么您需要获得在SDCard上写入数据的权限。

以下是获取许可的方法:

<强>的AndroidManifest.xml

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

如果您想支持Marshmallow(API-23),则需要获取此权限运行时。

为该参考链接:https://developer.android.com/training/permissions/requesting.html

答案 2 :(得分:1)

  

首先使用此命令获得runtime权限。

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

示例

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

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

答案 3 :(得分:0)

这完成了这项工作:

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