Android 6中的Micro SD卡写入权限

时间:2016-07-12 09:09:10

标签: android android-6.0-marshmallow android-permissions

在我的应用程序中,我从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卡(如果存在)。请帮忙。

0 个答案:

没有答案