Android-外部存储卡无法从我的应用程序写入

Android-外部存储卡无法从我的应用程序写入,android,android-sdcard,android-developer-api,Android,Android Sdcard,Android Developer Api,我需要帮助从我的应用程序获取连接的存储卡可写。 我使用的android版本是Marshmellow。我使用下面的代码请求运行时权限 if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED || (ContextCompat.checkSelfPermission(this, Man

我需要帮助从我的应用程序获取连接的存储卡可写。 我使用的android版本是Marshmellow。我使用下面的代码请求运行时权限

if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED ||
            (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)) != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_WRITE_STORAGE);
    } 

 @Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    if (requestCode == REQUEST_WRITE_STORAGE) {
        if ((grantResults.length > 0) && (grantResults[0] == PackageManager.PERMISSION_GRANTED)) {
            Log.d(TAG, "Permission Granted");
        }
    }
}
我还检查了设置,并授予了写入权限。 下面是我手机的两个存储位置

/storage/emulated/0 (Internal Memory, Writable)
/storage/9C33-6BBD (SDCard, Not writable, only readable)
我尝试了下面的代码只是为了检查我的存储卡是否可写

File file = new File("/storage/9C33-6BBD");
file.canWrite() // returns false every time
我不确定我遗漏了什么或做错了什么,其他应用在写入存储卡时似乎没有问题

我还使用了adb外壳,能够在我的存储卡中创建一个文件夹

我还在我的清单文件中添加了以下权限

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

如果你需要更多的细节,请告诉我。提前谢谢你帮助我

我不确定我错过了什么或做错了什么

您没有对Android 4.4+上任意位置的读/写权限

其他应用程序在写入存储卡时似乎没有问题

这些应用程序是由设备制造商或定制ROM开发人员预先安装的

或者,这些应用程序正在使用
getExternalFilesDirs()
getExternalCacheDirs()
,或者
getExternalMediaDirs()
。如果这些方法返回2+个位置,则第二个和后续的方法位于可移动存储器上,您可以对这些位置进行读/写操作

或者,这些应用程序正在使用来自的
ACTION\u OPEN\u DOCUMENT
ACTION\u CREATE\u DOCUMENT
、或
ACTION\u OPEN\u DOCUMENT\u TREE

或者,这些应用程序正在利用一些安全漏洞,希望能够得到修复

我不确定我错过了什么或做错了什么

您没有对Android 4.4+上任意位置的读/写权限

其他应用程序在写入存储卡时似乎没有问题

这些应用程序是由设备制造商或定制ROM开发人员预先安装的

或者,这些应用程序正在使用
getExternalFilesDirs()
getExternalCacheDirs()
,或者
getExternalMediaDirs()
。如果这些方法返回2+个位置,则第二个和后续的方法位于可移动存储器上,您可以对这些位置进行读/写操作

或者,这些应用程序正在使用来自的
ACTION\u OPEN\u DOCUMENT
ACTION\u CREATE\u DOCUMENT
、或
ACTION\u OPEN\u DOCUMENT\u TREE

或者,这些应用程序正在利用某些安全漏洞进行攻击,希望这些漏洞能够得到修复。

可能重复的