Мое устройство - это htc один двойной sim и по какой-то причине Environment.getExternalStorageDirectory() - это моя память о телефоне, это не съемная SD-карта. Я пытался найти путь реальной сд карты с помощью этого:Найти реальный путь к SD-карте и написать файл
public static HashSet<String> getExternalMounts() {
final HashSet<String> out = new HashSet<String>();
String reg = "(?i).*vold.*(vfat|ntfs|exfat|fat32|ext3|ext4).*rw.*";
String s = "";
try {
final Process process = new ProcessBuilder().command("mount")
.redirectErrorStream(true).start();
process.waitFor();
final InputStream is = process.getInputStream();
final byte[] buffer = new byte[1024];
while (is.read(buffer) != -1) {
s = s + new String(buffer);
}
is.close();
} catch (final Exception e) {
e.printStackTrace();
}
// parse output
final String[] lines = s.split("\n");
for (String line : lines) {
if (!line.toLowerCase(Locale.US).contains("asec")) {
if (line.matches(reg)) {
String[] parts = line.split(" ");
for (String part : parts) {
if (part.startsWith("/"))
if (!part.toLowerCase(Locale.US).contains("vold"))
out.add(part);
}
}
}
}
return out;
}
И я получил /мнт/media_rw/ext_sd
Я пытался записывать файлы в/мнт/media_rw/ext_sd/загрузки но файл не создается.
File file = new File("/mnt/media_rw/ext_sd/downloads", "test.txt");
FileWriter writer = null;
try {
writer = new FileWriter(file);
writer.write("sdfsdfsfd");
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
02-11 23:12:35.236 9110-9110/www.jenyakirmiza.com.testsdcard W/System.err﹕ java.io.FileNotFoundException: /mnt/media_rw/ext_sd/downloads/test.txt: open failed: EACCES (Permission denied)
Я слышал что-то о запрете, начиная с 4.4, поэтому теперь мы не можем записывать файлы на съемную SD-карту. Но они сказали, что вы можете писать в /sdcardpath/Android/data/your.package.name
ps. конечно, я добавил write_external permisssion для манифестации.
Возможно, вы захотите узнать больше о том, что [внутреннее хранилище] (http://commonsware.com/blog/2014/04/07/storage-situation-internal-storage.html), [внешнее хранилище] (http://commonsware.com/blog/2014/04/08/storage-situation-external-storage.html) и [съемное хранилище] (http://commonsware.com/blog/2014/04/09/storage -situation-removeable-storage.html) означают с точки зрения Android SDK. – CommonsWare
Какая честь, что вы отправили сэр на мой вопрос. Я использовал много вещей, которые вы создали. Большое вам спасибо за такой вклад в сообщество андроидов. Я прочитаю все, что вы предложили. –