2016-09-01 4 views
3

Я пытаюсь загрузить изображения из URL, используя следующий код: -Отменить загрузку в DownloadManager

public static void writeToDisk(Context context, @NonNull String imageUrl, @NonNull String downloadSubfolder) { 
    Uri imageUri = Uri.parse(imageUrl); 
    String fileName = imageUri.getPath(); 
    String downloadSubpath = downloadSubfolder + fileName; 

    DownloadManager downloadManager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE); 
    DownloadManager.Request request = new DownloadManager.Request(imageUri); 
    request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); 
    request.setDescription(imageUrl); 
    request.allowScanningByMediaScanner(); 
    request.setDestinationUri(getDownloadDestination(downloadSubpath)); 

    downloadManager.enqueue(request); 
} 

Я не могу понять, как отменить загрузку после ее начала.

ответ

4

Используйте метод enqueue получить ID как в

long downloadID = downloadManager.enqueue(request); 

И затем использовать метод remove проходящее в downloadID к нему.

downloadManager.remove(downloadID); 
+0

, когда я пытаюсь сделать это, это дает мне "java.lang.RuntimeException: Произошла ошибка при выполнении doInBackground()" на длинную downloadID = downloadManager.enqueue (запрос); –

+0

@AbhriyaRoy, я не понимаю, почему вам нужно использовать метод «enqueue» в AsyncTask, я думаю, что ошибка появляется оттуда. Если вам действительно нужно, что 1. вы можете передать 'Activity' в конструктор' AsyncTask', тогда вы можете использовать 'Activity.runOnUiThread' или 2. вы можете использовать' new Handler (Looper.getMainLooper) .pose (Runnable. ..) ' – oop