Я работаю над приложением 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 не запускало загрузку.
Если есть какой-либо параметр или метод, о которых я не знаю, я был бы рад узнать об этом.
Спасибо.