android自动打开apk文件失败,【Android】DownloadManager 打开url下载的APK文件无法打开的问题 cannot open file...

问题如标题

想用浏览器下载,或者下载器下载

应用场景有以下几种:

1.监控DownloadManager,文件下载完成时以文件路径的形式发送intent:

// install work

Intent install = new Intent(Intent.ACTION_VIEW);

install.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

String filePath = "file://" +

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath() + "/" +urlMap.get(String.valueOf(downloadId));

install.setDataAndType(Uri.parse(filePath),"application/vnd.android.package-archive");

startActivity(install);

关键就是这里:

promptInstall.setDataAndType(Uri.fromFile(new File(Environment.getExternalStorageDirectory() + "/download/myApp.apk")),

"application/vnd.android.package-archive");

需要设置mimeType为”application/vnd.android.package-archive”

————————————————————————————————

2.形式:DownloadManager添加之初就指定该下载文件为APK文件,方法如下:(因为项目需求,并不能使Activity保持在内存中,无法注册BroadcastReceiver监控下载管理器)

(关于下载管理器的使用办法,中文教程看这里(较繁琐,不推荐))更清晰的英文教程

// parse url

Uri mUri = Uri.parse(url);

// create request

DownloadManager.Request r = new DownloadManager.Request(mUri);

// set request property

r.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "YourApkName.apk");

r.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);

// create manager

DownloadManager dm = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);

// key code, set mine type

r.setMimeType("application/vnd.android.package-archive");

// add to queue

dm.enqueue(r);

其核心也就是设置DownloadManager的request的mimeType为”application/vnd.android.package-archive”;

这样设置之后,打开下载的APK就不会报“无法打开文件”的错误了;

  • 0
    点赞
  • 0
    收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值