Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android和H5交互-基礎篇

Android和H5交互-基礎篇

編輯:關於Android編程

1、webView加載頁面

我們都知道在Android中是通過webView來加載html頁面的,根據HTML文件所在的位置不同寫法也不同:

//例如:加載assets文件夾下的test.html頁面
mWebView.loadUrl("file:///android_asset/test.html")
//例如:加載網頁
mWebView.loadUrl("http://www.baidu.com")
//如果返回的是不是.HTML格式的URL 
mWebView.loadDataWithBaseURL(null, curentVideoInfo.getContent(), "text/html", "utf-8", null);
如果只是這樣調用mWebView.loadUrl()加載的話,那麼當你點擊頁面中的鏈接時,頁面將會在你手機默認的浏覽器上打開。那如果想要頁面在App內中打開的話,那麼就得設置setWebViewClient:
mWebView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
                mWebView.loadUrl(url);
                return true;
            }
        }
    });
2、Android本地通過Java調用HTML頁面中的JavaScript方法

想要調用js方法那麼就必須讓webView支持、以及更改webview顯示的字體大小設置,比如在tablet與手機版上。

WebSettings settings = webView.getSettings();
            if (Utils.isTablet(mContext)) {
                settings.setDefaultFontSize(getSharedPreferences(Constant.SharedPreferences, Context.MODE_PRIVATE).getString("text_size", "小").equals("小") ? 24 : 28);
            } else {
                settings.setDefaultFontSize(getSharedPreferences(Constant.SharedPreferences, Context.MODE_PRIVATE).getString("text_size", "小").equals("小") ? 18 : 24);
            }
            settings.setJavaScriptEnabled(true);

若調用的js方法沒有返回值,則直接可以調用mWebView.loadUrl("javascript:functionName()");其中functionName是js中的方法;若有返回值時我們可以調用mWebView.evaluateJavascript()方法:

 

mWebView.evaluateJavascript("sum(1,2)", new ValueCallback() {
        @Override
        public void onReceiveValue(String value) {
            Log.e(TAG, "onReceiveValue value=" + value);
        }
    });

js代碼如下:
<script type="text/javascript">
    function sum(a,b){
    return a+b;
    }
    function do(){
    document.getElementById("p").innerHTML="hello world";
    }
</script>
2、js調用Android本地Java方法

在Android4.2以上可以直接使用@JavascriptInterface注解來聲明,下面是在一個本地Java方法

 public class JsInteration {
    @JavascriptInterface
    public String back() {
        return "hello world";
    }
}

定義完這個方法後再調用mWebView.addJavascriptInterface()方法:
mWebView.addJavascriptInterface(new JsInteration(), "android");
那麼在js中怎麼來調用呢?
4、攔截HTML頁面中的點擊事件
mWebView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            //判斷url攔截事件
            if (url.equals("file:///android_asset/test2.html")) {
                Log.e(TAG, "shouldOverrideUrlLoading: " + url);
                startActivity(new Intent(MainActivity.this,Main2Activity.class));
                return true;
            } else {
                mWebView.loadUrl(url);
                return false;
            }
        }
    });

以上就是Java調用js方法以及js調用Java方法的實現交互方式中的一種。

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved