Android 6中的Micro SD卡写访问

Android 6中的Micro SD卡写访问,android,android-6.0-marshmallow,android-permissions,Android,Android 6.0 Marshmallow,Android Permissions,在我的应用程序中,我正在从互联网下载一些文件。我可以选择在哪里存储它们,内部存储还是外部sd卡。直到Kitkat,我可以毫无问题地写作。在Kitkat,它被阻止,除非应用程序是系统应用程序或手机是根,我试图使它与棒棒糖和Marsmallow工作 我有这样的权限: <uses-permission android:name="android.permission.READ_MEDIA_STORAGE" /> <uses-permission android:name="andro

在我的应用程序中,我正在从互联网下载一些文件。我可以选择在哪里存储它们,内部存储还是外部sd卡。直到Kitkat,我可以毫无问题地写作。在Kitkat,它被阻止,除非应用程序是系统应用程序或手机是根,我试图使它与棒棒糖和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" />
onRequestPermissionsResult过程告诉我我有写访问权。它不显示确认屏幕等

如果选择“storage/emulated/0”,我可以写入此目录,但不能写入第二个目录。我收到错误“打开失败:EACCES(权限被拒绝)”


我想要的主要是鼓励用户将这些文件写入外部SD卡(如果有)。请提供帮助。

可能的副本:尝试此操作,我实际使用的是ActivityCompat.checkSelfPermission,在OnRequestPermissions中结果我看到我有权限,在一个文件夹中我可以写入另一个文件夹中我不能。
我正在选择存储它们的位置,内部存储或外部sd卡。
。您忘记了外部存储。只有在有外部存储的情况下,您才能写入应用程序特定目录中的micro SD卡
pathtosdcard/Android/data/
。请查看
GetExternalFilesDirs()
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
        );
    }
    }
}