博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 调用手机自带的下载器下载
阅读量:6272 次
发布时间:2019-06-22

本文共 2783 字,大约阅读时间需要 9 分钟。

hot3.png

亲测有用,原文下载地址:

原文地址:https://blog.csdn.net/weixin_36554045/article/details/79108796

 

下面是原文:

创建一个广播类

public class UpdataBroadcastReceiver extends BroadcastReceiver {    @SuppressLint("NewApi")    public void onReceive(Context context, Intent intent) {        long myDwonloadID = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1);        SharedPreferences sPreferences = context.getSharedPreferences("downloadcomplete", 0);        long refernece = sPreferences.getLong("refernece", 0);        if (refernece == myDwonloadID) {            String serviceString = Context.DOWNLOAD_SERVICE;            DownloadManager dManager = (DownloadManager) context.getSystemService(serviceString);            Intent install = new Intent(Intent.ACTION_VIEW);            Uri downloadFileUri = dManager.getUriForDownloadedFile(myDwonloadID);            install.setDataAndType(downloadFileUri, "application/vnd.android.package-archive");            install.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);            context.startActivity(install);        }    }}

在AndroidManifest.xml中去注册广播

 

最后就是我们的下载方法

1.下载APP更新时

 

private void downloadAPK(String url) {    DownloadManager dManager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);    Uri uri = Uri.parse(url);    DownloadManager.Request request = new DownloadManager.Request(uri);    // 设置下载路径和文件名    request.setDestinationInExternalPublicDir("xxx(路径)", "xxx.apk");    request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);    request.setMimeType("application/vnd.android.package-archive");    // 设置为可被媒体扫描器找到    request.allowScanningByMediaScanner();    // 设置为可见和可管理    request.setVisibleInDownloadsUi(true);    long refernece = dManager.enqueue(request);    // 把当前下载的ID保存起来    SharedPreferences sPreferences = getSharedPreferences("downloadcomplete", 0);    sPreferences.edit().putLong("refernece", refernece).commit();}

2.下载其他文件时

 

private void imageDownload(String downloadUrl) {    DownloadManager dManager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);    Uri uri = Uri.parse(downloadUrl);    DownloadManager.Request request = new DownloadManager.Request(uri);    String[] urlname = downloadUrl.split("/");    // 设置下载路径和文件名    request.setDestinationInExternalPublicDir("xxx(路径)", urlname[urlname.length - 1]);    // request.setDescription("DOTA2资料库新版本下载");    request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);    //request.setMimeType("application/vnd.android.package-archive");    // 设置为可被媒体扫描器找到    request.allowScanningByMediaScanner();    // 设置为可见和可管理    request.setVisibleInDownloadsUi(true);    long refernece = dManager.enqueue(request);}

 

转载于:https://my.oschina.net/u/1462828/blog/1858803

你可能感兴趣的文章
《A Seat at the Table》作者访谈录
查看>>
F# 4.5提供Spans、Match!等特性
查看>>
微信小程序模块化开发实践
查看>>
Jenkins将致力于提升稳定性、易用性和云原生兼容性
查看>>
Facebook开源工具包LASER,支持93种语言
查看>>
禁止eclipse校验JavaScript
查看>>
从微服务迁移到工作流的经验之谈
查看>>
Oracle再发力,区块链平台多项更新
查看>>
微软发布用于Serverless架构的Azure API Management
查看>>
MongoDB Mobile Sync for iOS推出Beta版本
查看>>
Visual Studio 2015价格大幅下调
查看>>
QCon演讲速递:异步处理在分布式系统中的优化作用
查看>>
Java 20年:转角遇到Go
查看>>
软件测试自动化的最新趋势
查看>>
SpringOne大会上发布了一个实验性的反应式关系型数据库连接驱动R2DBC
查看>>
新JSON绑定库JSON-B发布公开预览版
查看>>
机器人操作系统来到Windows
查看>>
.NET Core运行时和基础类库性能提升
查看>>
Eclipse Open J9:Eclipse OMR项目提供的开源JVM
查看>>
HTTP内容分发——《HTTP权威指南》系列
查看>>