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

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

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

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

Solutions Collecting From Web of "GetExternalFilesDir () возвращает значение null (а не разрешение)"

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

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

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

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

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