Android解析WebView頁面的HTML和頁面中輸入框的手機號
阿新 • • 發佈:2018-12-21
一、設定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、獲取不到解析結果
- 檢查接收方法是否唯一 ]
- 檢查設定是否正確