我在为Google Nexus 5
编写的应用的内部(私有)存储中创建了json文件。
有人告诉我,这是所谓的私人应用程序空间,我无法从我的PC访问,除非我要么手机(不是选项),要么通过adb进行备份来解决问题。
我试图通过adb shell
访问。
但每当我尝试访问`数据?目录我被告知我没有权限访问该目录。
如何访问此目录和我的文件?
注意:我还被告知我应该尝试使用
Environment.getExternalStorageState()
而不是写入私人应用空间。但是,当我尝试写入/storage/emulated/0/
时,它也无法正常工作。
我不关心使用哪种方法,我只需要访问我在PC上创建的文件。
答案 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