在我的应用程序中,我从Internet上下载了一些文件。我在哪里存储它们,内部存储或外部SD卡。直到Kitkat,我可以毫无问题地写作。在Kitkat它被阻止,除非应用程序是系统应用程序或手机根植,我试图使它与Lollipop& Marsmallow。
我有这样的权限:
<uses-permission android:name="android.permission.READ_MEDIA_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_INTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />
测试设备是三星Galaxy S5 6.0.1和外部SD卡。
我通过读取“/ proc / mounts”来检索存储列表。它回到我身边 “storage / emulated / 0”和 “存储/ 7074-XXXX”
对于Marshmallow,我也检查了这样的访问:
private static final int REQUEST_EXTERNAL_STORAGE = 200;
private static String[] PERMISSIONS_STORAGE = {
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE
};
public static void VerifyStoragePermissions(Activity activity) {
if(android.os.Build.VERSION.SDK_INT >= 23) {
int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (permission != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(
activity,
PERMISSIONS_STORAGE,
REQUEST_EXTERNAL_STORAGE
);
}
}
}
onRequestPermissionsResult过程告诉我我有写访问权限。它没有显示确认屏幕等。
如果我选择“storage / emulated / 0”,我可以写入此目录,但不能写入第二个目录。我收到错误“open failed:EACCES(Permission denied)”
我想要的主要是鼓励用户将这些文件写入外部SD卡(如果存在)。请帮忙。