在Android WebView中处理JavaScript调用,您需要实现WebViewClient
并重写shouldOverrideUrlLoading()
和onPageFinished()
方法。此外,您还需要启用JavaScript支持。以下是一个简单的示例:
WebViewClient
:import android.webkit.JavascriptInterface;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class CustomWebViewClient extends WebViewClient {
@JavascriptInterface
public void showToast(String message) {
// 在这里处理JavaScript调用的结果
Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
}
}
注意,我们需要在showToast
方法上添加@JavascriptInterface
注解,以便将其暴露给JavaScript代码。
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = findViewById(R.id.webview);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webView.setWebViewClient(new CustomWebViewClient());
webView.addJavascriptInterface(new CustomWebViewClient(), "Android");
webView.loadUrl("https://example.com");
}
}
在这个例子中,我们将自定义的CustomWebViewClient
设置为WebView的客户端,并将其添加到WebView中,以便处理JavaScript调用。
<!DOCTYPE html>
<html>
<head>
<title>WebView Example</title>
<script type="text/javascript">
function callAndroidToast() {
Android.showToast("Hello from JavaScript!");
}
</script>
</head>
<body>
<button onclick="callAndroidToast()">Click me</button>
</body>
</html>
当用户点击按钮时,callAndroidToast()
函数将被调用,从而触发Android中的showToast
方法。在这个例子中,我们将显示一个Toast消息,但您可以根据需要执行任何操作。