Загрузка не начинается на Android 9 при запросе загрузки из WLAN без интернета - PullRequest
3 голосов
/ 05 мая 2019

Я работаю над приложением Android, которое подключается к локальному флеш-серверу через WiFi. Затем приложение отображает изображения, которые хранятся на сервере (RPi3). Щелчок по изображению вызывает запрос на загрузку, и я хочу, чтобы Android DownloadManager поставил запрос в очередь и загрузил изображение. Сеть WiFi не обеспечивает доступ в Интернет.

Пока я смог протестировать его на устройствах Android 6 и Android 8.1, и все работает нормально. При тестировании на нескольких устройствах Android 9 загрузка не начинается, но после отключения от локальной сети отображаются неудачные попытки.

Читая другие темы по этому поводу, я попробовал следующее:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>

И добавлено в AndroidManifest.xml :

android:networkSecurityConfig="@xml/network_security_config"
.setRequiresCharging(false)
.setAllowedOverMetered(false)
.setAllowedOverRoaming(false)
.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, (String) url);
  • Проверка еще раз права доступа . Они включены:
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />

Это запрос на скачивание Я создаю:

DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url))
        .setTitle("Some Title")
        .setDescription("Downloading a file")
        .setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED)
        .setDestinationInExternalPublicDir("some_path", (String) url)
        .setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI);
DownloadManager downloadManager= (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
downloadID = downloadManager.enqueue(request);

Сервер Flask (Python3) использует это возвращаемое изображение:

    @app.route('/getFullImage/<image_file>')
    def get_full_image(image_file):
        log.debug("Client requests full image.")
        folder = os.path.join(app.root_path, "media_images")

        return flask.send_from_directory(directory=folder, filename=image_file, as_attachment=True)

Как уже говорилось, на Android 6 и 8.1 он работал нормально, но ни одно из устройств Android 9 не запускало загрузку. Если есть какой-либо параметр или метод, о которых я не знаю, я был бы рад узнать об этом.

Спасибо.

...