【问题标题】:Cancel download in DownloadManager在 DownloadManager 中取消下载
【发布时间】:2017-01-09 07:24:06
【问题描述】:

我正在尝试使用以下代码从 URL 下载图像:-

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);
}

一旦开始下载,我不知道如何取消。

【问题讨论】:

    标签: android android-download-manager


    【解决方案1】:

    使用enqueue 方法获取ID,如

    long downloadID = downloadManager.enqueue(request);
    

    然后,使用remove 方法将downloadID 传递给它。

    downloadManager.remove(downloadID);
    

    【讨论】:

    • 当我尝试这样做时,它给了我“java.lang.RuntimeException: An error occurred while execution doInBackground()” at long downloadID = downloadManager.enqueue(request);
    • @AbhriyaRoy ,我不明白为什么你需要在 AsyncTask 下使用 enqueue 方法,我认为错误是从那里出现的。如果您真的需要 1.您可以将 Activity 传递给 AsyncTask 的构造函数,然后您可以使用 Activity.runOnUiThread 或 2. 您可以使用 new Handler(Looper.getMainLooper).pose(Runnable...)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-28
    • 2012-12-13
    • 1970-01-01
    • 1970-01-01
    • 2014-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多