版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Luck_Nie/article/details/83546071
背景
今天产品反馈,推荐列表应用下载不下来,感觉不应该啊,WebView我们移动端没有做任何操作和拦截,应该不会出现这种问题啊。所以把锅甩给前端了,前端研究了半天,说搞不了!找不原因,哈哈!(后来才发现是我们的锅)
原因
系统WebView 默认是不支持下载的,需要开发者自己实现.本人也是刚知道的,捂脸!
解决方案一:对下载链接进行拦截判断
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.endsWith(".apk")) {
Uri uri = Uri.parse(url);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
} else if (url.startsWith("tmast://appdetails")) {
if (!InstallUtil.isAvilible(WebViewActivity.this, "com.tencent.android.qqdownloader")) {
super.shouldOverrideUrlLoading(view, url);
ToastUtil.showToast(WebViewActivity.this, "请先安装应用宝!");
} else {
Uri uri = Uri.parse(url);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
} else if (url.contains(".apk?")) {
Uri uri = Uri.parse(url);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
return super.shouldOverrideUrlLoading(view, url);
}
方案二:设置WebView下载监听
系统有这个监听下载的方法,需要开发者自己去实现
//设置下载监听
mWebView.setDownloadListener(new DownloadListener() {
@Override
public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
//进行下载处理,跳转浏览器或者调用系统下载方法
//todo
}
});
完毕!
还有个中国移动手机(移动自有品牌的手机)兼容的问题,还有头疼中!!!!!!!!!!!