Я пытаюсь что-то записать в память телефона.
Сначала я жестко закодировал путь как:
myFile = new File("/sdcard/" + txtName.getText() + ".txt");
Это работает полностью нормально.
И затем, eclipse дает мне предупреждение, говорящее, что вместо этого я не должен был жестко закодировать такой путь, я должен сделать следующее:
myFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/"+ txtName.getText() + ".txt");
Затем я следую рекомендациям по исправлению и избегаю предупреждения.
Однако я встречал исключение во время выполнения в классе writer.
Затем я печатаю Environment.getExternalStorageDirectory().getAbsolutePath()
для цели отладки. Результатом является
/хранение/sdcard0
. Но hardcoded, который отлично работал до этого, фактически
/SDCard
.
Почему это произойдет?
И если я хочу избежать предупреждения, как я могу получить каталог путей более формальным и правильным способом вместо hardcoding пути?
P.S.: Мой телефон - HTC One X, у которого нет внешнего гнезда для SD-карт. Я полагаю, что 32-гигабайтное хранилище поставляется со встроенной SD-картой, поэтому суть должна быть одинаковой.