Чтение с SD-карты
Я пытаюсь прочитать простой текстовый файл с моей SD-карты, используя Java, и я не могу открыть его. Я использую Eclipse для разработчиков мобильных приложений в Ubuntu 12.04. Вот код в onCreate()
Метод основной деятельности:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String status = "Hello, is it me you're looking for?";
String storageState = Environment.getExternalStorageState();
File dir = Environment.getExternalStorageDirectory();
File f = new File(dir, "textTest.txt");
if (f.exists()) {
status = "File is found!";
} else {
status = "File is not found!";
}
this.text1 = (TextView) findViewById(R.id.textView1);
text1.setText(status.subSequence(0, status.length()));
}
Кроме того, вот некоторые из конструкторов, которые я пробовал для File f
Никто из них не работал
File f = new File(dir, "textTest.txt");
File f = new File("/sdcard/textTest.txt");
File f = new File(dir, "mnt/sdcard/textTest.txt");
Наконец, я проверил состояние внешнего хранилища, используя storageState
строка выше, а значение, возвращаемое Environment.getExternalStorageState()
является mounted
, Единственное, что у меня есть, - думаю, что-то может быть связано с тем, читается ли SD-карта или нет, но это всего лишь предположение. Есть идеи?
Добавлено: Если вы еще не догадались, TextView
объект читает " Файл не найден! ", когда я запускаю действие.
Добавлено 2: Хорошо, я только что попробовал что-то, что сработало. Когда я подключаю телефон через USB, открываются две папки, связанные с телефоном: в одной находятся все папки из внутреннего хранилища (данные, DCIM... и т. Д.) И папка, которая, как я предполагаю, подключена к SD-карте, поскольку Я добавил файлы через устройство чтения карт ноутбука, а затем ввел их в телефон. Однако когда я копирую файл "testText.txt" в первую папку (которая, как я предполагал, связана с внутренним хранилищем), конструктор File f = new File("/sdcard/textTest.txt");
работает. Как так?
1 ответ
На основании комментариев..
Добавьте это в свой AndroidManifest.xml
android.permission.READ_EXTERNAL_STORAGE
Также, если вы делаете что-то с операцией WRITE, добавьте это разрешение.
android.permission.WRITE_EXTERNAL_STORAGE