private val downloadManager by lazy { getSystemService(Context.DOWNLOAD_SERVICE) as DownloadManager }
private var downloadId = 0L
fun downloadByManager() {
val downloadRequest = DownloadManager.Request(Uri.parse("https://study.163.com/pub/study-android-official.apk")).apply {
setAllowedOverRoaming(false)
setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE)
setTitle("Download Update")
setDescription("Download progress running")
setVisibleInDownloadsUi(true)
val file = File(getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS), "study163.apk")
setDestinationUri(Uri.fromFile(file))
}
downloadId = downloadManager.enqueue(downloadRequest)
registerReceiver(downloadReceiver, IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE))
}
private val downloadReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
val query = DownloadManager.Query()
query.setFilterById(downloadId)
val cursor = downloadManager.query(query)
if (!cursor.moveToFirst()) return
Log.d("--wh--", when (cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS))) {
DownloadManager.STATUS_PAUSED -> "PAUSED"
DownloadManager.STATUS_PENDING -> "PENDING"
DownloadManager.STATUS_RUNNING -> "RUNNING"
DownloadManager.STATUS_SUCCESSFUL -> "SUCCESSFUL"
DownloadManager.STATUS_FAILED -> "FAILED"
else -> "===>"
})
}
}
Android DownloadManager
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 当react-native项目中有版本更新需求时,android会用到下载新版本需求,此时,可以通过封装Nativ...
- DownloadManager是Android系统提供给第3方应用的下载管理功能。 我用它去下载一个apk.文件 ...
- 现在做了一个下载,为了兼容性直接使用Android Sdk 自带的 DownloadManager 开发,在其他手...
- 17日出行归来,忙过了两天。今天先把自由行的攻略写出来,因为在出行前参考了很多网友的攻略,帮助很大。赠人玫瑰,手留...