WebView的使用

1.基本使用

       webView.setWebViewClient(new WebViewClient(){
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                //返回true時(shí)在webview中打開(kāi),false在瀏覽器中打開(kāi)
                view.loadUrl(url);
                return true;
            }
        });
    web.setWebChromeClient(new WebChromeClient(){
            @Override
            public void onProgressChanged(WebView view, int newProgress) {
              //進(jìn)度監(jiān)聽(tīng)
                LogUtil.e(TAG, "onProgressChanged: progress -> " + newProgress );
            }

        });
        WebSettings webSettings =webView .getSettings();
        //允許顯示js
        webSettings.setJavaScriptEnabled(true);
    

2.與js進(jìn)行互相調(diào)用

    //可能需要允許js顯示
    webView.addJavascriptInterface(this, "demo");

  @JavascriptInterface
    public void clickOnAndroid(String param) {
        //這里寫給js調(diào)用后執(zhí)行方法體
        // <button onClick="window.demo.clickOnAndroid('come from js')">點(diǎn)擊調(diào)用Native代碼并傳遞參數(shù)</button>
    }

交互的native方法是執(zhí)行在子線程的,如果有ui更新操作,需要切換到UI線程

3.重寫返回鍵

  public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
            webView.goBack();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

4.添加Cookie

synCookies(this, url, getCookieValue());

    /**
     * 同步cookie
     *
     * @param context
     * @param url
     */
    public static void synCookies(Context context, String url, List<Cookie> cookies) {
        CookieSyncManager.createInstance(context);
        CookieManager cookieManager = CookieManager.getInstance();
        cookieManager.removeSessionCookie();
        cookieManager.removeAllCookie();
        cookieManager.setAcceptCookie(true);
        StringBuilder sb = null;
        for (Cookie cookie : cookies) {
            sb = new StringBuilder();
            sb.append(String.format(cookie.name() + "=%s", cookie.value()));
            sb.append(String.format(";domain=%s", cookie.domain()));
            sb.append(String.format(";path=%s", cookie.path()));
            sb.append(String.format(";expiresAt=%s", cookie.expiresAt()));
            cookieManager.setCookie(url, sb.toString());
        }
        CookieSyncManager.getInstance().sync();
        String cookie = cookieManager.getCookie(url);
        Log.e(TAG, "synCookies: cookie:" + cookie);
    }
   /**
     * 獲得cookie信息(okhttp為例)
     *
     * @return
     */
    private List<Cookie> getCookieValue() {
        List<Cookie> allCookie = OkHttpUtils.getInstance().getCookieJar().getCookieStore().getAllCookie();
        /*Cookie cookie = allCookie.get(1);
        Log.e(TAG, "getCookieValue: name:" + cookie.name() + "    value:" + cookie.value() +
                "     hashcode:" + cookie.hashCode() +
                "    hostOnly:" + cookie.hostOnly() +
                "    secure:" + cookie.secure() +
                "   persistent:" + cookie.persistent());*/
        return allCookie;
    }

5.加載進(jìn)度條

 webView.setWebChromeClient(new WebChromeClient() {
            @Override
            public void onProgressChanged(WebView view, int newProgress) {
                if (newProgress == 100) {
                    pbLoading.setVisibility(View.INVISIBLE);
                } else {
                    if (View.INVISIBLE == pbLoading.getVisibility()) {
                        pbLoading.setVisibility(View.VISIBLE);
                    }
                    pbLoading.setProgress(newProgress);
                }
                super.onProgressChanged(view, newProgress);
            }
        });
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • WebView簡(jiǎn)介 String getUrl():獲取當(dāng)前頁(yè)面的URL。 reload():重新reload當(dāng)前...
    QM閱讀 3,306評(píng)論 0 52
  • 在上一篇中我們說(shuō)了WebView的基本使用安卓開(kāi)發(fā)之WebView的使用(1),里面提到了WebViewClien...
    Reathin閱讀 2,860評(píng)論 0 14
  • WebView的使用 http://blog.csdn.net/harvic880925/article/deta...
    往事一塊六毛八閱讀 1,020評(píng)論 0 0
  • 我做好了與你一輩子的準(zhǔn)備,你給我規(guī)劃了未來(lái),可是你有沒(méi)有問(wèn)過(guò)我這種未來(lái)是不是我想要的,最現(xiàn)實(shí)的東西我沒(méi)有看見(jiàn),未來(lái)...
    你想不想要擁有閱讀 462評(píng)論 0 3
  • 翻閱與梁漱溟先生有關(guān)的一本書《這個(gè)世界會(huì)好嗎》,翻到后記,梁先生的一段話,突然讓我心動(dòng)。 梁老認(rèn)為,人類面臨有三大...
    何以笙歌閱讀 134評(píng)論 0 0

友情鏈接更多精彩內(nèi)容