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;
}
이 대신, 내가 API 레벨에
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();
}
}
감사합니다. 코드를 사용하고 있습니다 –
경로 또는 내가 작성한 코드를 찾기 위해 사용하는 코드입니까? –