Android Webview 获取网页form 提交的数据
16lz
2021-01-23
android webview 获取网页form提交的数据
public class WebActivity extends BaseActivity { @ViewInject(R.id.web_view) private WebView mWebView; @ViewInject(R.id.tv_title_center) private TextView mTitle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_faq); ViewUtils.inject(this); String title = getIntent().getStringExtra("title"); if (!TextUtils.isEmpty(title)) { mTitle.setText(title); } else { findViewById(R.id.layout_title).setVisibility(View.GONE); } mWebView.addJavascriptInterface(new JavaScriptInterface(), "JSInterface"); String url = getIntent().getStringExtra("url"); mWebView.getSettings().setJavaScriptEnabled(true); mWebView.loadUrl(url); mWebView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } @Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { handler.proceed(); } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); view.loadUrl("javascript:" + buildInjection()); } }); } private String buildInjection() { StringBuilder sb = new StringBuilder(); sb.append("document.getElementsByTagName('form')[0].onsubmit = function () {"); sb.append("var applyname, pccc_applyname;var str = '';"); sb.append("var inputs = document.getElementsByTagName('input');"); sb.append("for (var i = 0; i < inputs.length; i++) {"); sb.append("if (inputs[i].name.toLowerCase() === 'applyname') {applyname = inputs[i];}"); sb.append("else if (inputs[i].name.toLowerCase() === 'pccc_applyname') {pccc_applyname= inputs[i];}"); sb.append("}"); sb.append("if (pccc_applyname!= null) {str += pccc_applyname.value;}"); sb.append("if (applyname!= null) { str += ' , ' + applyname.value;}"); sb.append("window.JSInterface.processFormInputs(str);"); sb.append("return true;"); sb.append("};"); return sb.toString(); } @OnClick(R.id.iv_tools_left) public void onBack(View view) { finish(); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && mWebView.canGoBack()) { mWebView.goBack();// 返回前一个页面 return true; } return super.onKeyDown(keyCode, event); } class JavaScriptInterface { @JavascriptInterface public void processFormInputs(String html) { LogUtils.e("html-->" + html); } }}
更多相关文章
- Android Studio学习:中级控件:使用Intent进行页面之间数据传输
- android页面切换动画
- Android 左右滑动切换页面或Activity的效果实现
- webViewJavascriptBridge踩坑【页面刚开始bridge失效一阵】
- Android:打开程序的全屏页面
- android 通过schema唤起应用指定页面
- Android中WebView获取网页中标题 ,内容, 图片的方法