1. 程式人生 > >WebView下載點選無反應問題

WebView下載點選無反應問題

背景

今天產品反饋,推薦列表應用下載不下來,感覺不應該啊,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
            }
        });

完畢!

還有個中國移動手機(移動自有品牌的手機)相容的問題,還有頭疼中!!!!!!!!!!!