在webview的JS中调用Java中的变量,可以通过以下步骤实现:
android.webkit.WebView
的WebViewClient
类,并重写onPageFinished()
方法和addJavascriptInterface()
方法。import android.webkit.JavascriptInterface;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MyWebViewClient extends WebViewClient {
private WebView webView;
public MyWebViewClient(WebView webView) {
this.webView = webView;
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
// 页面加载完成后,调用JS方法
webView.loadUrl("javascript:callJS()");
}
@JavascriptInterface
public String getVariable() {
// 返回Java中的变量值给JS
String variable = "Hello from Java";
return variable;
}
}
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);
// 创建自定义的WebViewClient
MyWebViewClient webViewClient = new MyWebViewClient(webView);
webView.setWebViewClient(webViewClient);
// 加载网页
webView.loadUrl("file:///android_asset/index.html");
}
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>WebView JS调用Java变量示例</title>
<script type="text/javascript">
function callJS() {
// 调用Java中的getVariable()方法获取变量值
var variable = window.android.getVariable();
alert(variable);
}
</script>
</head>
<body>
<h1>WebView JS调用Java变量示例</h1>
</body>
</html>
以上代码实现了在WebView的JS中调用Java中的变量。在MyWebViewClient
类中,通过addJavascriptInterface()
方法将Java中的getVariable()
方法暴露给JS调用。在JS代码中,通过window.android.getVariable()
来调用Java中的方法,并将返回的变量值进行处理。
领取专属 10元无门槛券
手把手带您无忧上云