[英]Can't get files of external storage directory
所以我試圖將所有文件都保存在某個目錄中,但是在嘗試使用file.listFiles()時總是會收到NullPointerException
我的清單文件中包含正確的權限(在應用程序標記之前):
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
碼:
private void moveFiles() {
String MYTAG = "Mover";
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
File folder = new File(Environment.getExternalStorageDirectory() + "/_appTests/");
if(folder.isDirectory()) { // true
// get all files
listFilesForFolder(folder); // Exception is thrown here
int amount = 0;
for (File f : allFiles) {
String destDir = getMoveDir(f.getName());
try {
moveFile(f.getAbsolutePath(), destDir);
} catch (IOException e) {
Log.e(MYTAG, "Error: "+e.getMessage()+" while moving file: "+ f.getName());
}
Log.i(MYTAG, destDir);
amount++;
}
Toast.makeText(MainActivity.this, "[" + MYTAG + "] Moved " + amount + " files!", Toast.LENGTH_SHORT).show();
Log.i(MYTAG, "Moved " + amount + " files!");
}
}
}
public void listFilesForFolder(File folder) {
for (File fileEntry : folder.listFiles()) // attempted to get length of a null array
{
if (fileEntry.isDirectory()) {
// recursive call if directory
listFilesForFolder(fileEntry);
} else {
// add to global list
allFiles.add(fileEntry);
}
}
}
我也無法訪問和讀取目錄_appTests中的文件,在這種情況下會引發EACCESS異常(拒絕權限)。
路徑正確,目錄也位於/ scard / _appTests 。
我是否必須使用超級用戶特權才能訪問此目錄?
應用程序minSdkVersion是22(Android 5.1),我在手機上運行Android 6.0,但是我不使用運行時權限請求,因此將它們包含在清單文件中。
嘗試在“設置”中手動授予“存儲”權限。
當有人將設備升級到android 6.0時,我們遇到了同樣的問題(我們的應用程序具有compileSdk 21)
嘗試將以下內容添加到清單中:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
由於您嘗試訪問該文件,因此可以解決該問題。
您還需要添加讀取文件的權限,這是:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
如果目標> sdk 23,則清單中的權限將無法正常工作。您需要在運行時上獲得許可才能正常工作。
Map<String, File> externalLocations = ExternalStorage.getAllStorageLocations();
File sdCard = externalLocations.get(ExternalStorage.SD_CARD);
File externalSdCard = externalLocations.get(ExternalStorage.EXTERNAL_SD_CARD);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.