WebView下载点击无反应问题

本文探讨了移动端WebView不支持直接下载文件的问题,提供了两种解决方案:一是通过shouldOverrideUrlLoading方法拦截下载链接并启动系统下载;二是使用setDownloadListener监听下载开始事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

今天产品反馈,推荐列表应用下载不下来,感觉不应该啊,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
            }
        });

完毕!

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敲代码的鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值