Android中DownloadManager实现文件下载实例详解

Android中DownloadManager实现文件下载

下载

创建下载链接

DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));

设置允许下载的网络环境

request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI);

WIFI网络 : DownloadManager.Request.NETWORK_WIFI

移动网络 : DownloadManager.Request.NETWORK_MOBILE

Notification显示下载进度

// 在Notification显示下载进度
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE);
// 设置Title
request.setTitle("更新");
// 设置描述
request.setDescription("正在下载更新文件...");

设置保存路径

private static final String DIR = "AutoUpdate";
private static final String APK = "MyHome.apk";
private static final String PATH = Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + DIR + "/" + APK;

request.setDestinationInExternalPublicDir(DIR, APK);

下载

下载会返回一个进程ID

DownloadManager downloadManager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
long id = downloadManager.enqueue(request);

取消下载

通过ID可以需要下载

downloadManager.remove(id);

下载完成的监听

下载完成,系统会发出广播,通过注册广播监听者可以监听到下载完成

广播的Action为DownloadManager.ACTION_DOWNLOAD_COMPLETE

/**
 * Broadcast intent action sent by the download manager when the user clicks on a running
 * download, either from a system notification or from the downloads UI.
 */
@SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
public final static String ACTION_NOTIFICATION_CLICKED =
  "android.intent.action.DOWNLOAD_NOTIFICATION_CLICKED";

Code

下载

DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
// WIFI状态下下载
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI);
// 设置通知栏
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE);
request.setTitle("更新");
request.setDescription("正在下载更新文件...");
// 存放路径
request.setDestinationInExternalPublicDir(DIR, APK);

// 开始下载
DownloadManager downloadManager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
long id = downloadManager.enqueue(request);

广播接收者

注册




 
 
 
 

 

 
  
   
    

    
   

  

  
   
    
   
  
 



实现

package com.example.kongqingwei.downloadmanagerdemo;

import android.app.DownloadManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

/**
 * Created by kongqingwei on 2016/12/19.
 * 广播接收者
 */
public class AutoUpdateBroadcastReceiver extends BroadcastReceiver {
 @Override
 public void onReceive(Context context, Intent intent) {
  if (DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(intent.getAction())) {
   Toast.makeText(context, "下载完成", Toast.LENGTH_SHORT).show();
   boolean isInstalled = AutoUpdater.installApk();
   Toast.makeText(context, isInstalled ? "安装成功" : "安装失败", Toast.LENGTH_SHORT).show();
  }
 }
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

你可能感兴趣的:(Android中DownloadManager实现文件下载实例详解)