繁体   English   中英

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

[英]Android - External Memory Card is not writeable from my app

我需要帮助以使附加存储卡可从我的应用中写入。 我正在使用的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 shell,并能够在我的存储卡中创建一个文件夹。

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

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

如果您需要更多详细信息,请告诉我。 在此先感谢您对我的帮助。

我不确定我缺少什么或做错了什么

您没有对Android 4.4+上可移动存储中任意位置的读/写权限。

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

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

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

或者,这些应用程序正在使用Storage Access Framework中的 ACTION_OPEN_DOCUMENTACTION_CREATE_DOCUMENTACTION_OPEN_DOCUMENT_TREE

或者,这些应用正在利用一些安全漏洞,希望该漏洞将得到修复。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM