在Android中,WebView是一个用于显示网页的视图。要处理用户输入,您需要设置一个WebChromeClient并覆盖onReceivedTitle方法。以下是一个简单的示例:
- 首先,在您的Activity中创建一个WebView实例:
WebView webView = findViewById(R.id.webView);
- 接下来,启用JavaScript支持并设置WebChromeClient:
// 启用JavaScript支持 WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true); // 设置WebChromeClient webView.setWebChromeClient(new WebChromeClient() { @Override public void onReceivedTitle(WebView view, String title) { super.onReceivedTitle(view, title); // 在这里处理页面标题更改 } });
- 为了处理用户输入,您需要覆盖
onPageFinished()
方法,并在其中添加一个JavaScript接口。例如,如果您想要处理搜索查询,可以这样做:
// 添加JavaScript接口 final WebChromeClient webChromeClient = new WebChromeClient() { @Override public void onReceivedTitle(WebView view, String title) { super.onReceivedTitle(view, title); // 在这里处理页面标题更改 } }; webView.setWebChromeClient(webChromeClient); // 设置WebViewClient以处理页面加载完成事件 webView.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); // 在这里添加JavaScript代码以处理用户输入 webView.evaluateJavascript("(function() { " + "var inputElements = document.querySelectorAll('.search-input'); " + "inputElements.forEach(function(element) { " + "element.addEventListener('input', function() { " + "window.AndroidInterface.onSearchInput(element.value); " + "}); " + "}); " + "})()", null); } });
- 最后,创建一个本地对象,以便从JavaScript调用Android方法:
public class MyJavaScriptInterface { private TextView searchResultTextView; public MyJavaScriptInterface(TextView searchResultTextView) { this.searchResultTextView = searchResultTextView; } @JavascriptInterface public void onSearchInput(String input) { // 在这里处理用户输入 searchResultTextView.setText("搜索查询: " + input); } }
- 将此本地对象添加到Activity中,并将其传递给WebView:
TextView searchResultTextView = findViewById(R.id.searchResultTextView); MyJavaScriptInterface myJavaScriptInterface = new MyJavaScriptInterface(searchResultTextView); webView.addJavascriptInterface(myJavaScriptInterface, "AndroidInterface");
现在,当用户在网页上的搜索输入框中输入内容时,Android应用程序将处理该输入并在searchResultTextView
中显示结果。您可以根据需要扩展此示例以处理其他类型的用户输入。