1.DownloadManager的基本设置
先提供截图
注释很详细,直接上代码
private Button btn_load;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_load = (Button)findViewById(R.id.btn_load);
btn_load.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getDownLoad();
}
});
}
public void getDownLoad(){
String uri="http://113.207.2.32/apk.r1.market.hiapk.com/data/upload/apkres/2016/3_20/12/com.h2y.android.shop.activity_122404.apk?wsiphost=local,http://apk.hiapk.com/search?key=%E9%85%92%E8%BF%90%E8%BE%BE&pid=0";
String savePath="/dkk/download/";
String appName = "jiuyunda.apk";
final DownloadManager manager = (DownloadManager)getSystemService(Context.DOWNLOAD_SERVICE);
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(uri));
//设置允许使用的网络类型
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_MOBILE | DownloadManager.Request.NETWORK_WIFI);
//下载时,通知栏显示途中
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE);
request.setTitle("正在下载。。。");
request.setDescription("别急,快好了");
//显示下载界面
request.setVisibleInDownloadsUi(true);
//设置下载文件的存放位置
request.setDestinationInExternalFilesDir(this, savePath, appName);
//返回的Id是当前下载任务分配的唯一ID,可以根据ID查询到当前下载状态或进行一些操作
final long id = manager.enqueue(request);
//注册动态的广播,监听下载完成的状态
IntentFilter filter = new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE);
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//接收到下载完成的ID
long reference = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1);
if (id == reference) {
Toast.makeText(getApplication(),"下载完成",Toast.LENGTH_SHORT).show();
}
}
};
registerReceiver(receiver, filter);//注册
}
2.权限设置
<!--网络连接权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<!--往sdcard中写入数据的权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<!--在sdcard中创建/删除文件的权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>