//设置WebView下载监听
wvDetail.setDownloadListener(new DownloadListener() {
@覆盖
公共无效onDownloadStart(字符串url,字符串userAgent,字符串contentDisposition,字符串mimeType,长contentLength){
showWillDownloadDialog(url, contentDisposition, mimeType);
}
});完成以上三步后,扫描二维码下载的功能就基本实现了。
我通过App Store、百度手机助手等获取了一些App的下载地址,并通过草丛二维码网站生成了对应的二维码,然后通过我们的扫码下载功能进行扫描下载。经过测试,发现Android市场中的这些下载链接都可以正常下载。下载完成后,点击通知栏,会正常弹出安装页面。但是,对于一些公司平台上托管的应用程序,如果我们扫描相应的二维码,则会正常弹出安装页面。可以正常下载,并且通知栏显示下载进度。下载完成后,点击通知栏,弹出“无法打开”的提示。
这是怎么回事?为什么扫描二维码下载后点击应用宝、百度手机助手可以正常弹出安装页面,而其他的则不能?
没关系!如果出现问题并且令人恐惧,我们可以解决它们。
手机连接电脑,又出现“无法打开”的问题。仔细查看Android Studio控制台打印的系统日志,发现如下日志:
I/ActivityManager: START u0 {act=android.intent.action.VIEW dat=content://com.android.providers.downloads.documents/document/21typ=application/octet-stream flg=0x10000003} 来自uid 10017
08-14 11:13:19.394 16343-16362/android.process.media W/DownloadManager: 无法启动Intent { act=android.intent.action.VIEW dat=content: //com.android.providers.downloads.documents/document/21typ=application/octet-stream flg=0x10000003 }: android.content.ActivityNotFoundException: 没有找到处理Intent 的Activity { act=android.intent.action.VIEW dat=content://com.android.providers.downloads.documents/document/21 典型值=application/octet-stream flg=0x10000003 }上述错误日志的大致含义为:type=application/octet-stream, action=android.intent.action.VIEW, dat=content://com.android.providers.downloads .documents /document/21,找不到对应的系统Activity来执行对应的操作。
一旦找到问题的症结所在,就需要找到解决问题的方法。
因为我们下载的apk文件,如果我们想要点击弹出安装页面,我们需要将mimeType设置为mimeType="application/vnd.android.package-archive"。因此,我们在调用系统DownloadManager进行下载时就可以进行相应的操作。判断和处理的实现如下:
/**
* 调用系统下载器进行下载
*
* @参数网址
* @参数内容配置
* @参数mimeType
*/
私有无效downloadBySystem(字符串url, 字符串contentDisposition, 字符串mimeType) {
//指定下载地址
DownloadManager.Request 请求=new DownloadManager.Request(Uri.parse(url));
//允许媒体扫描,并根据下载的文件类型添加到相册、音乐等媒体库中。
request.allowScanningByMediaScanner();
//设置通知的显示类型,下载中和完成后显示通知
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
//允许在计费流量下下载
//request.setAllowedOverMetered(false);
//允许该记录在下载管理界面可见
request.setVisibleInDownloadsUi(false);
//允许漫游时下载
request.setAllowedOverRoaming(true);
//允许下载的网络类型
//request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI);
//设置下载文件的保存路径和文件名
String fileName=URLUtil.guessFileName(url, contentDisposition, mimeType);
LogUtil.w("fileName:{}" + fileName);
if (fileName !=null fileName.endsWith(ConstantUtil.FILE_EXTENSION_NAME) SPECIAL_MIME_TYPE.equals(mimeType)) {
mimeType="application/vnd.android.package-archive";
}
request.setMimeType(mimeType);
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, fileName);
//另一种可选方法是自定义下载路径。
//request.setDestinationUri()
//request.setDestinationInExternalFilesDir(ContextUtil.getAppContext(), ContextUtil.getAppContext().getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath(), fileName);
最终DownloadManager downloadManager=(DownloadManager) getSystemService(DOWNLOAD_SERVICE);
//添加下载任务
长downloadId=downloadManager.enqueue(request);
LogUtil.w("downloadId:{}" + downloadId);
【下载完成APK文件无法打开?解决方法一览】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
我昨天下载了APP,结果打开不了耶!看到这个标题感觉很有希望
有15位网友表示赞同!
这种情况太常见了吧,下载完的文件不能用真的让人头大
有12位网友表示赞同!
我也遇到过这样的问题,有时候软件版本不兼容也是原因呢
有16位网友表示赞同!
分享经验啊!我正被这个问题困扰着!
有8位网友表示赞同!
是不是安卓手机的系统版本太低了?换个更高的版本试试?
有11位网友表示赞同!
后台文件权限的问题有可能吗?尝试看看授权设置
有10位网友表示赞同!
有没有可能是下载链接质量问题啊?试试从别的网站下载一遍
有12位网友表示赞同!
这下载路径是不是没有权限访问呢?需要更改下存放位置
有13位网友表示赞同!
我的话,遇到这种情况我会先重启手机,有时候真的能解决的奇迹发生
有16位网友表示赞同!
检查一下病毒软件有没有误杀啊!别被它挡住了
有11位网友表示赞同!
手机内存不足导致无法打开?清理下多余文件试试
有5位网友表示赞同!
确认一下APK文件的类型是否正确,是不是下载错了呢?
有11位网友表示赞同!
apk文件不兼容手机版本?可以看看官方网站的兼容性信息哦
有13位网友表示赞同!
有没有可能是网络环境的问题啊?速度慢一点也容易出现这种情况
有19位网友表示赞同!
我遇到过的情况是APK文件被损坏,重新下载一下试试看
有6位网友表示赞同!
试着用其他软件打开apk文件看看
有17位网友表示赞同!
官方网站有解决方法吗?可以去看看他们的客服或者论坛提问
有20位网友表示赞同!
分享下你的手机型号,也许我也有类似的解决方案
有6位网友表示赞同!
我也是安卓用户,期待大神解答!
有20位网友表示赞同!
希望能够找到解决这个问题的方法,不然下载半天就这样了真无奈
有14位网友表示赞同!