- 浏览: 212756 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (196)
- android (153)
- sqlite (1)
- java (3)
- os (4)
- tools (4)
- ResolveInfo 转 packageinf 取信息 (1)
- multimedia (2)
- fastboot (1)
- create user in samba (0)
- android qcn (0)
- windows (0)
- net (2)
- linux (1)
- git (0)
- proguard (0)
- android cpu (1)
- android gts (1)
- MySql (1)
- c/c++ (0)
- network (1)
- python (3)
- AI (1)
- Ultroedit (1)
- HarmonyOS NEXT (0)
From: https://www.jianshu.com/p/46fd1c253701
private static long mTaskId = -1;
/*
* android system api to download
*/
public static void download(Context context, String urlStr, String filename) {
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(urlStr));
request.setAllowedOverRoaming(false);//漫游网络是否可以下载
//设置文件类型,可以在下载结束后自动打开该文件
// MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
// String mimeString = mimeTypeMap.getMimeTypeFromExtension(
// MimeTypeMap.getFileExtensionFromUrl(urlStr));
// request.setMimeType(mimeString);
//在通知栏中显示,默认就是显示的
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE);
request.setVisibleInDownloadsUi(true);
//sdcard的目录下的download文件夹,必须设置
request.setDestinationInExternalPublicDir("/download/", filename);
// request.setDestinationInExternalFilesDir(context,type, filepath) // 也可以自己指定下载路径
// 将下载任务加入队列
DownloadManager downloadManager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
//加入下载队列后会给该任务返回一个long型的id,
//通过该id可以取消任务,重启任务等等,看上面源码中框起来的方法
mTaskId = downloadManager.enqueue(request);
// downloadManager.remove(taskId) //
context.registerReceiver(mReceiverDownload, new IntentFilter());
}
private static BroadcastReceiver mReceiverDownload = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
checkDownloadStatus();
}
};
private static void checkDownloadStatus() {
DownloadManager.Query query = new DownloadManager.Query();
query.setFilterById(mTaskId);
DownloadManager downloadManager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
Cursor c = downloadManager.query(query);
if (c.moveToFirst()){
int status = c.getColumnIndex(DownloadManager.COLUMN_STATUS);
switch (status){
case DownloadManager.STATUS_PAUSED:
Log.v(TAG, "下载暂停");
break;
case DownloadManager.STATUS_PENDING:
Log.v(TAG, "下载延迟");
break;
case DownloadManager.STATUS_RUNNING:
Log.v(TAG, "正在下载...");
break;
case DownloadManager.STATUS_SUCCESSFUL:
Log.v(TAG,"下载完成");
// Play Act
break;
case DownloadManager.STATUS_FAILED:
Log.v(TAG, "下载失败");
break;
}
}
}
希望你可以看到最后这几句,不然你也会被坑的!
1.虽然下载什么的不需要自己操心了,但是建议还是将整个上面四段代码放在Service中执行,因为放在Activity中时,当用户按home键后,即使下载完了,也不会弹出安装界面
2.建议使用startService的方式启动Service,这样不会与Activity生命周期绑定,保证下载完后能顺利安装。
3.Service使用完后要及时地停掉!
作者:Marno
链接:https://www.jianshu.com/p/46fd1c253701
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
private static long mTaskId = -1;
/*
* android system api to download
*/
public static void download(Context context, String urlStr, String filename) {
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(urlStr));
request.setAllowedOverRoaming(false);//漫游网络是否可以下载
//设置文件类型,可以在下载结束后自动打开该文件
// MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
// String mimeString = mimeTypeMap.getMimeTypeFromExtension(
// MimeTypeMap.getFileExtensionFromUrl(urlStr));
// request.setMimeType(mimeString);
//在通知栏中显示,默认就是显示的
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE);
request.setVisibleInDownloadsUi(true);
//sdcard的目录下的download文件夹,必须设置
request.setDestinationInExternalPublicDir("/download/", filename);
// request.setDestinationInExternalFilesDir(context,type, filepath) // 也可以自己指定下载路径
// 将下载任务加入队列
DownloadManager downloadManager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
//加入下载队列后会给该任务返回一个long型的id,
//通过该id可以取消任务,重启任务等等,看上面源码中框起来的方法
mTaskId = downloadManager.enqueue(request);
// downloadManager.remove(taskId) //
context.registerReceiver(mReceiverDownload, new IntentFilter());
}
private static BroadcastReceiver mReceiverDownload = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
checkDownloadStatus();
}
};
private static void checkDownloadStatus() {
DownloadManager.Query query = new DownloadManager.Query();
query.setFilterById(mTaskId);
DownloadManager downloadManager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
Cursor c = downloadManager.query(query);
if (c.moveToFirst()){
int status = c.getColumnIndex(DownloadManager.COLUMN_STATUS);
switch (status){
case DownloadManager.STATUS_PAUSED:
Log.v(TAG, "下载暂停");
break;
case DownloadManager.STATUS_PENDING:
Log.v(TAG, "下载延迟");
break;
case DownloadManager.STATUS_RUNNING:
Log.v(TAG, "正在下载...");
break;
case DownloadManager.STATUS_SUCCESSFUL:
Log.v(TAG,"下载完成");
// Play Act
break;
case DownloadManager.STATUS_FAILED:
Log.v(TAG, "下载失败");
break;
}
}
}
希望你可以看到最后这几句,不然你也会被坑的!
1.虽然下载什么的不需要自己操心了,但是建议还是将整个上面四段代码放在Service中执行,因为放在Activity中时,当用户按home键后,即使下载完了,也不会弹出安装界面
2.建议使用startService的方式启动Service,这样不会与Activity生命周期绑定,保证下载完后能顺利安装。
3.Service使用完后要及时地停掉!
作者:Marno
链接:https://www.jianshu.com/p/46fd1c253701
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
发表评论
-
Android SnappyDB
2018-05-15 11:23 904https://blog.csdn.net/qq_214305 ... -
使用UncaughtExceptionHandler保存全局异常(转)
2018-05-07 15:04 602From: https://blog.csdn.net/dre ... -
android udp
2018-04-10 19:47 564Android之Socket的基于UDP传输 接收方创建步骤: ... -
Snackbar 可以交互的Toast
2018-04-08 21:44 726Snackbar 是 Android design sup ... -
android 操作串口
2018-03-19 18:20 604http://blog.csdn.net/akunainian ... -
proguard对 android-support-v4.jar 的配置
2018-03-16 15:32 686-libraryjars libs/android-sup ... -
apk 多个dex
2018-03-16 10:05 967android studio 配置应用生成多个dex ... -
ddmlib 解决android n file explorer 为空问题
2018-03-16 09:27 888百度云:http://pan.baidu.com/s/1sl4 ... -
android 代码混淆
2018-03-15 08:38 1013打开混淆开关 Android.mk ... -
menu item 显示icon
2018-03-07 09:32 645@Override public boolean onMenu ... -
ubuntu 脚本切换root用户,并执行其它脚本
2018-03-05 09:58 0#!/bin/bash expect -c" ... -
DrawerLayout 滑动侧边栏
2018-03-01 10:42 0// TODO -
jack-server 多用户编译问题
2018-02-27 10:44 13993),需要同时修改 $HOME/.jack-server/co ... -
更新eclipse 遇到两个问题 Oxygen.2 Release (4.7.2)
2018-02-26 14:28 12131. the file dx.jar was not load ... -
监听系统开关变化
2018-02-05 14:02 802// 转屏开关 /** * Content obse ... -
android 8.0 模块编译命令
2018-02-02 14:42 1165Invoke ". build/envsetup.s ... -
svn checkout 忽略某个文件夹
2018-01-26 11:14 1354android源码更新时, frameworks\compil ... -
eclipse jni
2018-01-19 16:10 491试过,可以运行 http://blog.csdn.net/sb ... -
opencv for android
2018-01-19 14:37 412http://blog.csdn.net/sbsujjbcy/ ... -
Cordova // TODO
2018-01-18 11:12 322Cordova提供了一组设备相关的API,通过这组API,移动 ...
相关推荐
Android系统自带了一个名为DownloadManager的服务,它为开发者提供了便捷的方式来管理和执行文件下载。本文将深入探讨Android DownloadManager以及如何自定义下载功能。 **Android DownloadManager** 1. **...
DownloadManager是系统开放给第三方应用使用的类,包含两个静态内部类DownloadManager.Query和DownloadManager.Request。DownloadManager.Request用来请求一个下载,DownloadManager.Query用来查询下载信息,这两个...
在Android系统中,DownloadManager是一个系统服务,用于在后台下载大文件,比如应用程序、更新或者媒体文件。这个服务是异步的,允许用户在不占用应用界面的情况下进行下载操作,并且支持断点续传和网络恢复功能。接...
在Android开发中,DownloadManager是处理长时间下载操作的一个系统服务。通过使用DownloadManager,开发者可以实现应用的自动更新功能,并通过监听下载进度,向用户展示当前下载状态。下面详细介绍一下Download...
在Android应用开发中,有时我们需要实现一个功能,即使用系统内置的`DownloadManager`服务来下载APK文件,并在下载完成后自动提示用户进行安装。这个功能对于应用的更新或者安装外部资源非常实用。本文将详细讲解...
在Android平台上,`DownloadManager`是一个系统服务,用于在后台管理大文件的下载任务,尤其适合在用户不直接交互的情况下进行。本示例将重点介绍如何利用`DownloadManager.Request`方法来实现文件下载,并在通知栏...
本篇将详细讲解如何使用Android自带的`DownloadManager`来实现这个功能。 `DownloadManager`是Android系统提供的一个服务,用于在后台下载大文件,特别适合用来下载应用更新。它具有良好的兼容性,从Android 2.3...
在Android系统中,内置了一个强大的下载管理器——DownloadManager,它是Android SDK的一部分,允许开发者方便地实现后台下载任务,无需用户手动操作。本示例将详细介绍如何使用DownloadManager进行文件下载,并提供...
`DownloadManager`是Android系统服务之一,它负责在后台下载文件,特别适合处理大文件,如APK更新包。这个服务具有以下优点: 1. **后台下载**:即使用户关闭了应用,下载任务也会继续。 2. **断点续传**:如果下载...
Android系统提供了一个内置的`DownloadManager`类,它允许开发者在后台下载大文件,如应用的新版本APK,而无需用户手动干预。本篇文章将深入探讨如何利用`DownloadManager`来实现自动版本更新。 首先,我们需要了解...
首先,DownloadManager是Android提供的一个系统服务,它允许应用程序在后台下载文件,并且提供了对下载任务的管理、监控和恢复功能。开发者可以通过BroadcastReceiver监听下载状态的变化,从而实现对升级文件的处理...
DownloadManager是Android系统中用于管理下载任务的框架,它为应用程序提供了一种异步、后台处理的方式,方便用户在后台下载文件,并且支持断点续传和网络恢复功能。这个框架使得开发者可以轻松地在Android应用中...
`Android-Updater`是一个基于`DownloadManager`服务的封装库,旨在简化应用程序的更新流程,为开发者提供一个高效且用户友好的解决方案。本篇文章将深入探讨`Android-Updater`的工作原理、主要功能及其在实际开发中...
Android-Download-Manager Android/Java download manager library help you to download files in parallel mechanism in some chunks. Overview This library is a download manager android/java library which ...
Android是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的移动操作系统,主要应用于移动设备,如智能手机和平板电脑。该系统最初由安迪·鲁宾开发,后被Google公司收购并注资,随后与多家硬件制造商、软件...
这个广播接收者主要工作是把DownloadManager下载的文件拷贝到U盘中以解决在TVBox开发过程中想要直接把文件下载到U盘时产生的java.lang.SecurityException异常。没分的朋友可以直接前往:...
《Android Download Manager详解》 Android Download Manager是一款专为Android系统设计的高级下载管理工具,它提供了全面且强大的功能,能够满足用户对下载任务的各种需求。本文将深入探讨其主要特性,包括多任务...
在Android系统中,DownloadManager是系统提供的一个服务,用于在后台下载大文件,如应用程序的更新包。这个服务是异步的,可以在用户离开应用后继续下载,而且它还提供了断点续传、网络状况检查等功能,使得在移动...