evaluateJavascript
方法。“ java,webView.evaluateJavascript("javascript:yourFunction('" + parameter + "')", null);,
“
1、创建Android项目并添加WebView控件:在Android Studio中创建新项目,于布局文件(如activity_main.xml
)中添加WebView
组件,示例代码如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <WebView android:id="@+id/webview" android:layout_width="match_parent" android:layout_height="match_parent"/> </RelativeLayout>
2、加载网页:在Activity中获取WebView
对象,调用其loadUrl
方法加载网页,可以是本地HTML文件或网络URL,例如加载本地HTML文件:
WebView webView = findViewById(R.id.webview); WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true); webView.loadUrl("file:///android_asset/index.html");
3、在Android代码中调用JS函数并传递参数:通过WebView
的loadUrl
或evaluateJavascript
方法调用JS函数,并传递参数,使用loadUrl
方法示例:
String data = "Hello from Android!"; webView.post(new Runnable() { @Override public void run() { webView.evaluateJavascript("displayData('" + data + "');", null); } });
使用evaluateJavascript
方法示例:
String data = "Hello from Android!"; webView.evaluateJavascript("displayData('" + data + "');", null);
4、在JS代码中定义全局函数处理参数:在被调用的JS代码中定义全局函数,处理从Android传递的参数。
function displayData(data) { document.getElementById('dataDisplay').innerText = data; }
5、在JS代码中调用Android接口方法并传递参数(可选):若需在JS中调用Android方法,先在Android端定义接口类,并在类中实现要调用的方法,使用@JavascriptInterface
注解,然后在JS中通过接口名调用该方法并传递参数。
Android端定义接口类:
public class WebAppInterface { @JavascriptInterface public void showToast(String toast) { Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show(); } }
在Activity中添加接口:
webView.addJavascriptInterface(new WebAppInterface(this), "Android");
JS端调用Android方法:
function callAndroidFunction() { Android.showToast("Hello from JavaScript!"); }
1、问题:如何在Android中调用JS函数并传递多个参数?
解答:可以使用类似传递单个参数的方式,只是在拼接字符串时将多个参数按一定格式连接起来,若要传递三个参数param1
、param2
、param3
,可以在Android代码中使用webView.evaluateJavascript("methodName('param1', 'param2', 'param3');", null);
,其中methodName
是JS中定义的接收参数的函数。
2、问题:Android调用JS传递参数时,参数类型有哪些限制?
解答:Android传递给JS的参数通常是字符串类型,如果需要传递其他类型的数据,可以先在Android端将数据转换为字符串形式,再传递给JS,在JS端接收到字符串后,根据具体情况将其转换回相应的数据类型进行处理。