我正試圖在SD卡上寫下一張照片,但沒有成功。無法在SD卡上寫入文件
我已經獲得了在可移動存儲中寫入的權限,並且安裝了SD卡。
此外,我檢查了SD卡的路徑存在,我獲得了積極的結果。
失敗的地方是我使用mkdir()
函數。它返回false並且沒有文件被創建。
我已經上都有了三星A6(棉花糖)和三星TAB4(棒棒堂)
這是我使用的檢索路徑SD卡中的代碼段測試。
因爲標準程序並沒有與三星設備的工作,我使用這個代碼片段,我從一個計算器答案
的路徑與三星A6這個函數返回了是/存儲/ 6DD9-1D15 。
public String[] getStorageDirectories() {
String[] storageDirectories;
String rawSecondaryStoragesStr = System.getenv("SECONDARY_STORAGE");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
List<String> results = new ArrayList<String>();
File[] externalDirs = getApplicationContext().getExternalFilesDirs(null);
for (File file : externalDirs) {
String path = file.getPath().split("/Android")[0];
if ((Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && Environment.isExternalStorageRemovable(file))
|| rawSecondaryStoragesStr != null && rawSecondaryStoragesStr.contains(path)) {
results.add(path);
}
}
storageDirectories = results.toArray(new String[0]);
} else {
final Set<String> rv = new HashSet<String>();
if (!TextUtils.isEmpty(rawSecondaryStoragesStr)) {
final String[] rawSecondaryStorages = rawSecondaryStoragesStr.split(File.pathSeparator);
Collections.addAll(rv, rawSecondaryStorages);
}
storageDirectories = rv.toArray(new String[rv.size()]);
}
return storageDirectories;
}
此,取而代之的,是我用寫的SD卡下的DCMI目錄的文件夾(在我會把照片)
public void mkFolder(String folderPath) { // make a folder under Environment.DIRECTORY_DCIM
File folder = new File(folderPath);
try {
// MKDIRS returns false
if (folder.mkdirs()) {
Log.d(TAG, "folder created:" + folder.toString());
} else {
Log.d(TAG, "create folder fails:" + folder.toString());
}
} catch (Exception ecp) {
ecp.printStackTrace();
}
}
好的,謝謝,我修改了與我正在使用的代碼 –
您的意思是我用來檢索路徑的代碼或我編寫的代碼? –