Чтение с 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
Другие вопросы по тегам