簡體   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