WebView下載點選無反應問題
阿新 • • 發佈:2018-12-18
背景
今天產品反饋,推薦列表應用下載不下來,感覺不應該啊,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 } });
完畢!
還有個中國移動手機(移動自有品牌的手機)相容的問題,還有頭疼中!!!!!!!!!!!