AndroidJS语法详解,如何学习并应用?
- 行业动态
- 2025-03-08
- 1
一、Android调用JS方法
1、加载本地HTML文件
在Activity
或Fragment
中初始化WebView
,并启用JavaScript。
使用webView.loadUrl("file:///android_asset/sample.html");
加载本地HTML文件。
2、定义按钮的点击事件
找到布局文件中的按钮,并设置点击事件监听器。
在点击事件中,调用testJS()
方法来执行JS代码。
3、Android调用JS无参方法
直接使用webView.loadUrl("javascript:test()");
来调用JS中的无参方法test()
。
在Android 4.4及以上版本中,推荐使用webView.evaluateJavascript("javascript:test()", new ValueCallback<String>() {...});
来替代,以便接收JS的返回值。
4、Android调用JS有参方法
将参数拼接成字符串,然后使用webView.loadUrl("javascript:test('" + arg + "')");
来调用JS中的有参方法test(arg)
。
同样,在Android 4.4及以上版本中,可以使用webView.evaluateJavascript("javascript:test('" + arg + "')", new ValueCallback<String>() {...});
来替代。
二、JS调用Android方法
1、创建JavaScript Interface类
创建一个继承自Object
的类,并在其中定义需要被JS调用的方法。
使用@JavascriptInterface
注解标记这些方法,以便JS能够访问。
2、添加JavaScript Interface到WebView
使用webView.addJavascriptInterface(new WebAppInterface(this), "Android");
将JavaScript Interface添加到WebView中,并为其在JS中命名。
3、JS调用Android无参方法
在JS中使用命名的JavaScript Interface来调用Android中的无参方法,如window.Android.showToast();
。
4、JS调用Android有参方法
在JS中传递参数给Android方法,如window.Android.showToastWithArg("Hello from JS");
。
三、单元表格
交互方向 | 方法 | Android端实现 | JS端实现 | 示例 |
Android调用JS | 无参 | webView.loadUrl("javascript:test()"); | function test(){...} | Android调用JS中的test() 方法 |
有参 | webView.loadUrl("javascript:test('" + arg + "')"); | function test(arg){...} | Android调用JS中的test(arg) 方法,并传递参数 | |
JS调用Android | 无参 | public void showToast(){...} webView.addJavascriptInterface(new WebAppInterface(this), "Android"); | window.Android.showToast(); | JS调用Android中的showToast() 方法 |
有参 | public void showToastWithArg(String arg){...} webView.addJavascriptInterface(new WebAppInterface(this), "Android"); | window.Android.showToastWithArg("Hello from JS"); | JS调用Android中的showToastWithArg(arg) 方法,并传递参数 |
四、相关问题与解答
1、问:如何在Android中接收JS方法的返回值?
答:在Android 4.4及以上版本中,可以使用webView.evaluateJavascript(String script, ValueCallback<String> resultCallback);
方法来代替webView.loadUrl()
方法,通过传递一个ValueCallback<String>
对象作为回调,可以在回调方法onReceiveValue(String value)
中接收到JS方法的返回值。
2、问:如何确保Android与JS之间的交互安全?
答:为了确保安全,可以采取以下措施:
避免在WebView中加载不受信任的网页内容。
对从JS传递到Android的数据进行验证和消毒,以防止注入攻击。
使用最新的Android版本和WebView组件,以确保已知的安全破绽得到修复。
考虑使用安全的通信协议(如HTTPS)来传输数据。