WebView下载点击无反应问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 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
            }
        });

完毕!

还有个中国移动手机(移动自有品牌的手机)兼容的问题,还有头疼中!!!!!!!!!!!

猜你喜欢

转载自blog.csdn.net/Luck_Nie/article/details/83546071
今日推荐