Mine - гибридное приложение Cordova. Я установил этот плагин для загрузки PDF-файлов с сервера (URL). Он отлично работает на устройствах под управлением Android 7.0. Когда такое же приложение установлено на устройствах Oreo, ничего не происходит, и через некоторое время я вижу сообщение «загрузка не удалась». Что может быть причиной этого?
Я также обновил мобильное устройство, на котором он работал ранее, до 8.0 и протестировал. Это не удалось. Поэтому, когда ОС Oreo, это не работает.
private void startDownload(String message, CallbackContext callbackContext) {
if (message != null && message.length() > 0) {
String filename = message.substring(message.lastIndexOf("/")+1, message.length());
try {
filename = URLDecoder.decode(filename,"UTF-8");
} catch (UnsupportedEncodingException e) {
callbackContext.error("Error in converting filename");
}
android.app.DownloadManager downloadManager = (android.app.DownloadManager) cordova.getActivity().getApplicationContext().getSystemService(Context.DOWNLOAD_SERVICE);
Uri Download_Uri = Uri.parse(message);
android.app.DownloadManager.Request request = new android.app.DownloadManager.Request(Download_Uri);
//Restrict the types of networks over which this download may proceed.
request.setAllowedNetworkTypes(android.app.DownloadManager.Request.NETWORK_WIFI | android.app.DownloadManager.Request.NETWORK_MOBILE);
//Set whether this download may proceed over a roaming connection.
request.setAllowedOverRoaming(false);
//Set the title of this download, to be displayed in notifications (if enabled).
request.setTitle(filename);
//Set a description of this download, to be displayed in notifications (if enabled)
request.setDescription("DataSync File Download.");
//Set the local destination for the downloaded file to a path within the application's external files directory
request.setDestinationInExternalFilesDir(cordova.getActivity().getApplicationContext(), Environment.DIRECTORY_DOWNLOADS, filename);
//Set visiblity after download is complete
request.setNotificationVisibility(android.app.DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
long downloadReference = downloadManager.enqueue(request);
callbackContext.success(message);
} else {
callbackContext.error("Expected one non-empty string argument.");
}
}