Не удается загрузить файл - java, downloadmanager, API 28

Последние 48 часов я пытаюсь решить эту проблему, я просмотрел множество примеров ... и все еще ничего. Я пытаюсь добавить в свое приложение загрузку одного файла - позже он будет запущен RabbitMQ, но в настоящее время - в целях тестирования я хотел бы сделать это с помощью buttonClick, в приведенном ниже примере я пропустил любые дополнительные параметры (например, Описание, Название и т. Д. ...). После щелчка я получаю информацию о том, что диспетчеру загрузки не удалось загрузить файл, конечно, файл существует по ссылке (я могу загрузить его без каких-либо проблем из браузера телефона).

public void downloadFile2(View view) {
            if(PermissionCheck.readAndWriteExternalStorage(this)) {
                DownloadManager downloadmanager = (DownloadManager)this.getSystemService(this.DOWNLOAD_SERVICE);
                Uri uri = Uri.parse("http://xxxxxx/File1.pdf");
                DownloadManager.Request request = new DownloadManager.Request(uri);
                request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE);
                request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
                request.setVisibleInDownloadsUi(true);
                request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS,"/File1.pdf");
                downloadmanager.enqueue(request);
            }
        }

Environment.DIRECTORY_DOWNLOADS - я пробовал несколько загрузок каталогов, но ни одна из них не работала setDestinationInExternalPublicDir (я ласо пробовал setDestinationInExternalFilesDir - не повезло

package com.example.majap;

    import android.Manifest;
    import android.app.Activity;
    import android.content.Context;
    import android.content.pm.PackageManager;
    import android.support.v4.app.ActivityCompat;

    public class PermissionCheck {
        public static boolean readAndWriteExternalStorage(Context context) {
            if (ActivityCompat.checkSelfPermission(context, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED || ActivityCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
                ActivityCompat.requestPermissions((Activity) context, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
                return false;
            } else {
                return true;
            }
        }
    }

И, конечно, в манифесте у меня есть (даже слишком много)

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_INTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />

person Laki    schedule 20.01.2020    source источник
comment
вероятно, другая сторона - на моем веб-сервере python, я не знаю почему, но, вероятно, downloadmanager не принимает сборку send_from_directory на колбе python3 .... все еще исследует это ...   -  person Laki    schedule 20.01.2020


Ответы (1)


Через 4 дня и 28 чашек кофе я нашел решение:

<application
....
android:usesCleartextTraffic="true"

начиная с Android 8 - HTTP-трафик в открытом виде не разрешен

person Laki    schedule 22.01.2020