Я новичок в разработке Android с Eclipse, и мне сложно определить, как настроить приложение, чтобы он мог читать/записывать текст на виртуальную SD-карту.
Я сделал много google'ing и нашел бит и куски, но я все еще чувствую, что мне не хватает чего-то, что делает его неработоспособным.
В моем манифесте я включил:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" \>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" \>
Вот мой код:
String state=Environment.getExternalStorageState();
if(!state.equals(Environment.MEDIA_MOUNTED))
data.setText("SD card not mounted");
else
{
File externalDir=Environment.getExternalStorageDirectory();
File textFile=new File(externalDir.getAbsolutePath()+File.separator+"text.txt");
try
{
writeTextFile(textFile, "this is a test\n LINE BREAK");
String text=readTextFile(textFile);
data.setText(text);
if(!textFile.delete())
data.setText("couldn't remove temporary dir");
}
catch(Exception e)
{
data.setText(e.getMessage());
}
}
private void writeTextFile(File file, String text) throws IOException
{
BufferedWriter writer = new BufferedWriter(new FileWriter(file));
writer.write(text);
writer.close();
}
private String readTextFile(File file) throws IOException
{
BufferedReader reader = new BufferedReader(new FileReader(file));
StringBuilder text=new StringBuilder();
String line;
while((line=reader.readLine())!=null)
{
text.append(line);
text.append("\n");
}
reader.close();
return text.toString();
}
У меня есть первая часть кода в функции нажатия кнопки, а переменная "data" предназначена для просмотра editText. Каждый раз, когда я запускаю его и нажимаю кнопку, я получаю результат "SD-карта не смонтирована".
Я знаю, что мне не хватает важного шага, чтобы это нормально функционировало. Может ли кто-нибудь помочь мне, пожалуйста? Спасибо!
Я столкнулся с этой проблемой с новым Android 6. + avd, где я не настраивал SD-карту, когда я впервые запускал avd. Он не создал символическую ссылку правильно.
Он был связан с: /mnt/user/0/primary
Вот символические ссылки
/sdcard -> /storage/self/primary
cd /storage/self
ls -la
primary -> /mnt/user/0/primary
cd /mnt/user/0/
Не было создано основного каталога. Я воссоздал avd и прошел процесс настройки SD-карты, и теперь жизнь великолепна!
Я думаю, что вы столкнулись с этой проблемой, потому что ваш эмулятор может быть неправильно настроен для использования (или обеспечения) функциональности SD-карты.
Поэтому я предлагаю вам посетить AVD Manager> Edit AVD> Укажите размер требуемой SD-карты.
Также не забудьте добавить Hardware Property в тот же avd. Выберите "Создать"> " Поддержка SD-карт "> установите значение "true".
Я думаю, что это решит проблему. Если это все еще имеет значение - сделайте отчет здесь! Удачи! :)