Подтвердить что ты не робот

GetExternalFilesDir() возвращает значение null (а не разрешение)

Я некоторое время работал над приложением и тестировал его на многих устройствах. Внезапно он прекратил работу над версией Motorola Xoom Family Edition (Honeycomb 3.1). Каждый раз, когда я пытаюсь запустить приложение, он будет терпеть неудачу при вызове getExternalFilesDir(), поскольку этот вызов возвращает null вместо файла.

Из моих исследований любой, у кого есть аналогичная проблема, либо отсутствует WRITE_EXTERNAL_STORAGE, ни разу не получил ответа, или говорил о ошибке в Froyo. Ничто из этого не применимо здесь - и снова, он отлично работает на других устройствах, у меня есть разрешение WRITE_EXTERNAL_STORAGE, и он даже работал над этим устройством до нескольких минут назад.

Любая идея, что может вызвать эту проблему, или как ее программно предотвратить?

4b9b3361

Ответ 1

Проблема исчезла после перезапуска планшета. Это может быть просто какая-то причудливая причуда, которая чрезвычайно редка и исправлена ​​простым перезапуском; Надеюсь, что нет, поскольку я хотел бы иметь надежный способ предотвратить это, а не просто надеяться, что все пользователи, которые сталкиваются с ошибкой, понимают.

Ответ 2

Такая же проблема для Samsung SCH-1405 (VZW Galaxy II), работающая под управлением 2.3.6 (ядро 2.6.35.7-FF1). Нет проблем с получением каталога внешних файлов в течение нескольких месяцев, а затем bam, он начинает возвращать NULL. Перезагруженный телефон и проблема исчезли. Не хорошее предзнаменование.

Возможной причиной может быть то, что я переключил этот телефон в режим отладки USB и вышел из него, чтобы получить снимки экрана, и вырвал USB-кабель с телефона, не отсоединив телефонные файловые системы от моего Mac. Это новое поведение с моей стороны.

Когда я смотрю на результат возврата from android.os.Environment.getExternalStorageState() с присутствующей проблемой, я вижу "общий", но когда телефон перезапускается, результат "монтируется". Таким образом, кажется, что, когда телефон считает, что внешнее хранилище является "общим", оно не позволяет приложению получать доступ к внешнему хранилищу. Это предположение.

Ответ 3

Это произойдет, если устройство находится в режиме "Mass Storage". Если вы измените его на MTP или "Charge Only", в зависимости от устройства, он должен работать. Это связано с тем, что внешнее хранилище данных технически не смонтировано на устройстве, а на вашем компьютере.