Как решить ожидающий статус DownloadManager?

Я пытаюсь запустить загрузку файла в своих приложениях для Android с классом DownloadManager и поставить некоторые Toast со статусом загрузки. Когда я нажимаю кнопку загрузки, тост всегда говорит, что моя загрузка ожидает. Почему это произошло?

В DownloadManager documnet я прочитал, что pending означает, что загрузка ожидает начала. Чего ждать? Где мне искать? Как изменить статус и начать загрузку?

Вот мой код:

public void downloadFile(){
        Uri uri = Uri.parse("https://kopi81.000webhostapp.com/cccc.jpg");
        DownloadManager.Request request = new DownloadManager.Request(uri);
        request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
        request.setDestinationInExternalPublicDir(
                Environment.DIRECTORY_DOWNLOADS,
                "cccc.jpg");
        Long ref = downloadManager.enqueue(request);

        DownloadManager.Query query = new DownloadManager.Query();
        query.setFilterById(ref);
        Cursor cursor = downloadManager.query(query);
        if(cursor.moveToFirst()){
            DownloadStatus(cursor, ref);
        }
    }

Я думаю, что мой интернет также хорошо без проблем с ним. Файл, который я пытаюсь получить, находится на моем сервере 000webhost.com. Когда я пытаюсь получить любой файл с другого сервера, начинается загрузка. У моего сервера возникла проблема или у моего приложения для Android?


person Ignatius Chandra    schedule 11.07.2018    source источник


Ответы (1)


Я написал этот код для вас. Надеюсь помочь вам ❤ :

private DownloadManager downloadManager;
private Uri Download_Uri;
private long refid;
public void downloadFile(){

        registerReceiver(onComplete,
        new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
        downloadManager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
        Download_Uri = Uri.parse("https://kopi81.000webhostapp.com/cccc.jpg");
        DownloadManager.Request req = new DownloadManager.Request(Download_Uri);
                req.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE);
                req.setAllowedOverRoaming(false);
                req.setTitle("Downloading ... " );
                req.setDescription("Downloading " + "cccc.jpg");
                req.setVisibleInDownloadsUi(true);
                req.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "/Kopi81/"  + "cccc.jpg");
                refid = downloadManager.enqueue(req);

                }


    BroadcastReceiver onComplete = new BroadcastReceiver() {

    public void onReceive(Context context, Intent intent) {

               Toast.makeText(context,"Download completed !",Toast.LENGTH_SHORT).show();
                NotificationCompat.Builder mBuilder =
                new NotificationCompat.Builder(MainActivity.this)
                .setSmallIcon(R.drawable.ic_launcher)
                .setContentTitle("Kopi81")
                .setContentText("Download completed !");
            NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
            notificationManager.notify(455, mBuilder.build());


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

Я тестировал на своем устройстве [Sony Z3] и [Sony XZ], и у меня не было проблем!

удачи.

person Siros Baghban    schedule 11.07.2018