簡體   English   中英

無法在SD卡上創建應用程序目錄

[英]Can't create application directory on SD card

我正在開發一個應將照片存儲在SD卡上的應用。 首先,由於getExternalStorageDirectory()沒有返回准確的SD卡路徑,因此在代碼中檢索了SD卡路徑。 然后,我試圖創建一個目錄來存儲圖片:

String PACKAGE_NAME = "com.example.me.sdapp";
// sdpath = "/storage/extSdCard/"
String path = sdpath+"Android/data/"+PACKAGE_NAME;
File folder = new File(path);
if (!folder.exists()){
   var = folder.mkdirs();
   if (!folder.canWrite()){
       Log.d("SD Card app", "Directory is not writable");
   }
}

未構建目錄,並且確實出現日志消息。 因此,我想我不能寫那個空間。 但是,當我使用adb shell運行時,可以手動創建目錄:

mkdir /storage/extSdCard/Android/data/com.example.me.sdapp

手動創建目錄后,可以從應用程序將圖片存儲在其中。

為什么不能通過應用程序在SD卡上創建我的應用程序文件夾,但是一旦手動創建了文件夾,我仍然可以通過應用程序向其中寫入文件? 我如何從應用程序創建該文件夾?

我試圖使它在清單中有無許可的情況下都可以工作:

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

但是我想這絕對不是問題,因為一旦我手動創建目錄,應用程序就可以在其中寫入內容。

該設備是Samsung Galaxy Tab III,Android版本是4.4.2。

編輯

當有人將我的問題標記為與問題重復時,我將嘗試解釋為什么其他帖子沒有解決我的問題。

  • 所有答案都指向方法getExternalStorageDirectory() ,該方法並不總是指向SD卡;它總是指向SD卡。 就我而言,它指向內部存儲。 因此,當我使用這種方法時,確實可以從應用程序創建應用程序文件夾,但是該文件夾將在內部存儲中創建,而不是在SD卡上。

  • 一些答案提到清單許可,我說我已經考慮過了。

**用於路徑檢索**

File direct = new File(Environment.getExternalStorageDirectory() + "Your folder path" );
       if (!direct.exists()) {
                              mkdir();
                                         }

這將為您提供正確的SD卡路徑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM