1、通过WebView的loadUrl()方法
步骤:将需要调用的JS代码以.html
格式放到src/main/assets
文件夹里(也可以是远程URL),在Android代码中初始化WebView,并启用JavaScript支持,使用loadUrl()
方法加载JS代码,通过post()
方法发送消息,调用JS代码。
示例:假设有一个名为javascript.html
的文件,其中包含一个名为callJS()
的函数,在Android代码中,可以这样调用:
WebView mWebView = findViewById(R.id.webview); WebSettings webSettings = mWebView.getSettings(); webSettings.setJavaScriptEnabled(true); mWebView.loadUrl("file:///android_asset/javascript.html"); Button button = findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mWebView.post(new Runnable() { @Override public void run() { mWebView.loadUrl("javascript:callJS()"); } }); } });
2、通过WebView的evaluateJavascript()方法
步骤:与loadUrl()
方法类似,先初始化WebView并启用JavaScript支持,使用evaluateJavascript()
方法直接执行JS代码,这个方法可以在网页加载完成后或任意时间点执行JS代码。
示例:
WebView mWebView = findViewById(R.id.webview); WebSettings webSettings = mWebView.getSettings(); webSettings.setJavaScriptEnabled(true); mWebView.loadUrl("file:///android_asset/javascript.html"); mWebView.evaluateJavascript("javascript:yourFunction();", new ValueCallback<String>() { @Override public void onReceiveValue(String value) { // 处理JavaScript执行的结果 } });
方法 | 描述 | 优点 | 缺点 |
loadUrl() | 通过WebView的loadUrl()方法加载并执行JS代码 | 简单易用,适用于加载本地或远程JS文件 | 需要将JS代码放在指定路径,不够灵活 |
evaluateJavascript() | 通过WebView的evaluateJavascript()方法直接执行JS代码 | 可以直接执行任意JS代码,灵活性高 | 需要确保JS代码在执行时WebView已经初始化完成 |
1、Q: Android调用JS代码时,如何传递参数?
A: 可以通过字符串拼接的方式将参数传递给JS函数,在Java代码中使用"javascript:yourFunction('param1', 'param2');"
的形式调用JS函数,并在JS函数中接收这些参数。
2、Q: 如何在Android中处理JS调用结果?
A: 当使用evaluateJavascript()
方法时,可以通过实现ValueCallback<String>
接口来处理JS调用结果,在回调方法onReceiveValue()
中处理从JS返回的数据。