1

我在为我的Google Nexus 5.

有人告诉我,这是所谓的私人应用程序空间,除非我根手机(不是一个选项)或通过 adb 进行备份来使用解决方法,否则我无法从我的 PC 访问它。

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

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

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

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

4

4 回答 4

1

您可以使用 Android Device Monitor 访问私有应用程序空间、root 设备和模拟器(包括 Genymotion 和 AVD 在内的所有模拟器默认为 root)

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

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

由于此权限在 Android 6.0 中被归类为危险权限,因此您应该明确请求访问它。更多关于许可。

如果您不能或不想根您的物理手机,您可以将文件写入外部存储并在您的 PC 上访问它们。

于 2016-10-05T11:49:40.530 回答
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

于 2016-10-05T12:03:30.387 回答
1

首先runtime使用此命令获得许可。

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

例子

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

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

于 2016-10-05T12:15:22.430 回答
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
于 2016-10-11T19:58:51.183 回答