js怎么给安卓传递参数?

clipboard.png

clipboard.png
我需要点击某个按钮给安卓传递一个参数,安卓同事告诉我用图一这种方法就可以,但结果如图二所示报错,请问怎么解决。

阅读 5.5k
5 个回答

你的同事很可能已经在 Android 内用 JavascriptInterface 实现了 wvc 这个对象,但这个对象只能在安卓上你们的应用内有效,建议你去好好沟通下

window原生都没有wvc这个对象吧 ,更别说command这个方法了, 跟安卓协同开发的话需要相互制定调用的方法名,以及相关传递的参数

你可以先自定义一个JavaScriptInterface

inner class JavaScriptInterface {

    @JavascriptInterface
    fun hello(string: String) {
        print("Hello Word")
    }
}

然后使用WebView的addJavascriptInterface方法

addJavascriptInterface(JavaScriptInterface(), "interface")

最后在JavaScript里,可以直接

window.interface.hello();

用dsbrige与安卓交互。
http://www.jianshu.com/p/3946...
通过cdn或者npm下载dsbrige,需要用的地方var dsBrige=require('dsbrige');
dsBrige.call('安卓提供的方法',{
msg:'你传个安卓的参数'})

Js 调用 Android 侧的 Java 代码需要 Android 侧编写通信接口:

public class YourJavaScriptInterface {
    @JavascriptInterface        //使用该注解表明该方法可以被js调用到
    public void command(string: String) {
        
    }
}

将该通信接口绑定到 WebView 上:

webView.addJavascriptInterface(new YourJavaScriptInterface(), xxx);  //第二个参数为暴露给 js 的名字

WebView 要允许 js 的执行:

webView.getSettings().setJavaScriptEnabled(true);

然后 js 侧就可以用以下方式调用到 Android 侧的方法了:

window.xxx.command('hello');

基本的 Android 与 Js 交互可以参考鄙人写的一篇博客:Android 与 Javascript 的交互

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题