1. 程式人生 > >Android解析WebView頁面的HTML和頁面中輸入框的手機號

Android解析WebView頁面的HTML和頁面中輸入框的手機號

一、設定webview

// 開啟JavaScript支援
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new PhoneJavaScript(), "android");

自己定義的類

public final class PhoneJavaScript {
		//一定也要加上這個註解,否則沒有用
        @JavascriptInterface
        public void getPhone(String phone) {
            if (!TextUtils.
isEmpty(phone) && phone.length() == 11) { //獲取到手機號完成剩下的步驟 } } }

二、程式碼

  • 獲取html
webView.loadUrl("javascript:window.android.showBody(document.getElementsByTagName('html')[0].value);");
  • 獲取body
webView.loadUrl("javascript:window.android.showBody(document.body.innerHTML);"
);
  • 獲取input
webView.loadUrl("javascript:window.android.getPhone(document.querySelector('input[type=\"tel\"]').value);");
  • 獲取input
webView.loadUrl("javascript: var inputs = document.getElementsByTagName('input');" +
                                "for(var i=0;i<inputs.length;i++){" +
                                "   if(inputs[i].getAttribute('type')=='text' || inputs[i].getAttribute('type')=='tel'|| inputs[i].getAttribute('type')=='number'){"
+ " window.android.getPhone(inputs[i].value);" + " }" + "}");

三、踩坑注意

1、loadUrl時報錯的解決方案

runOnUiThread(new Runnable() {
    @Override
    public void run() {
       webView.loadUrl("javascript:window........");
    }
});

2、獲取不到解析結果

  • 檢查接收方法是否唯一 ]
  • 檢查設定是否正確