Android: невозможно сохранить файл на внешнюю SD-карту, хотя у меня правильный путь - PullRequest
0 голосов
/ 26 апреля 2019

так что в принципе моя проблема довольно проста, и все же я нигде не нашел решения для этого.

Прежде всего, я тестировал этот код на:

  • Samsung Galaxy Tab Note 10.1 [2014] SM-P605 под управлением Android 5.1.1, API22 с установленной внешней SD-картой 32 ГБ .
  • Google Pixel 3 XL под управлением Android 9, API 28

Короче говоря, я делаю заявку, и на каком-то этапе это приложение необходимо сохранитьфайл изображения (файл изображения JPG) в:

  • первичное общее хранилище «Изображения» каталог /storage/emulated/0/Pictures или
  • внутри внешней SD-карты, если устройство может поддерживать один И, если оно установлено, т. е. внутри что-то вроде /storage/extSdCard/.

Это полностью зависит от пользователя приложения, где они хотят сохранить изображение.

Теперь, сохранение в основном (общем) общем хранилище /storage/emulated/0/Pictures действительно просто, проблем вообще нет (буквально никаких проблем как в Pixel 3 XL, так и вGalaxy Note 10.1, все хорошо) .Моя проблема с сохранением на внешнюю SD-карту

Я использовал этот код ниже, чтобы получить путь к внешней SD-карте:

    String sdCardPath = System.getenv("SECONDARY_STORAGE");

Если я попытаюсь распечатать sdCardPath выше, я получу /storage/extSdCard/ что совершенно верно, я проверил путь к внешней SD-карте в Galaxy Note с помощью ES File Explorer, и то же самое с sdCardPath .

Тем не менее, когда я сохраняю свой файл JPG в sdCardPath , даже если он выглядит так, как будто файл сохранен там без проблем (мой журнал не выдал никакой ошибки), дляПо какой-то причине изображение там не сохраняется, буквально ничего нового не сохраняется в /storage/extSdCard.

Я также пытался создать папку Pictures внутри внешней SD-карты, но всякий раз, когда я выполнял этот блок кода:

    //check if the folder already exists
    if (!filePath.exists()) {
        if (!filePath.mkdirs()) {
            showToast("Problem creating the picture directory");
        } else {
            showToast("Successfully created the folder \"Pictures\"");
        }
    }

Он всегда показывает тост Проблема с созданием каталога изображений

Опять же, это происходит только в том случае, если я пытаюсь сохранить изображение на внешней SD-карте.Нет проблем с сохранением в /storage/emulated/0/Pictures.

Я также использовал эти разрешения уже внутри AndroidManifest.xml:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

Так что, если кто-то знает об этом, не могли бы вы поделиться им смне или дать мне небольшую подсказку о том, что происходит?Я просто хочу иметь возможность сохранять снимки на внешнюю SD-карту и, если возможно, создать папку Pictures на SD-карте, чтобы сохранить все снимки.

С уважением

...