安卓:如何使用下载管理器类?

2022-09-01 14:55:25

我想从网址下载二进制文件。是否可以使用我在这里找到的Android下载管理器类 DownloadManager类


答案 1

是否可以使用我在这里找到的Android下载管理器类

是的,尽管这仅在Android API Level 9(版本2.3)之后可用。下面是一个示例项目,演示了 .DownloadManager


答案 2

使用 DownloadManager 类(仅限 GingerBread 和更新版本)

GingerBread带来了一项新功能DownloadManager,它允许您轻松下载文件,并将处理线程,流等的艰苦工作委托给系统。

首先,让我们看一个实用程序方法:

/**
 * @param context used to check the device version and DownloadManager information
 * @return true if the download manager is available
 */
public static boolean isDownloadManagerAvailable(Context context) {

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) {
        return true;
    }
    return false;
}

方法的名称解释了这一切。一旦你确定DownloadManager可用,你可以做这样的事情:

String url = "url you want to download";
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
request.setDescription("Some descrition");
request.setTitle("Some title");
// in order for this if to run, you must use the android 3.2 to compile your app
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
    request.allowScanningByMediaScanner();
    request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
}
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "name-of-the-file.ext");

// get download service and enqueue file
DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
manager.enqueue(request);

下载进度将显示在通知栏中。