[英]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.