我们的应用想包成一个安卓APP,但是没有用phonegap,用的似乎是原生的,具体我也不太明白。我主要负责web,现在需要和安卓的哥们儿进行交互,它暴露给我一个函数比如说window.haha.hehe(),我调用这个之后安卓客户端就能调用原生的地图。我想要获取地图信息,但是不知道该怎么做。如果我在window.haha.hehe里传一个回调函数,但是android那边应该怎么写呢?网上看到一种方法,是把回调函数变成字符串传过去,安卓那边解析后执行。但是那样执行的作用域是全局的,根本无法访问到我调用window.haha.hehe()时作用域里的变量啊。
有没有什么比较好的方法呢,谢谢啦
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
试试Crosswalk+Cordova,于是你就可以自己做应用开发了
你这边需要封装好,把你函数声明完成后,注册到一个全局的函数列表里,并把这个函数调用方式通过字符串或者其他方式传入到Android提供的函数里。
假设调用方式是
callback[3](poi)那么可以
window.haha.hehe("callback[3]");告诉Android端调用callback[3]就可以啦。这里很类似jsonp。
Android端就可以使用
调用到你的回调函数。
另外,这和你的变量作用域没有关系,举个例子
你看,能输出
3之前看到的博客,记下来了。
WebView 与 JS 交互
1.Android 利用 webView 调用网页上的JS 代码
Android 中可以通过WebView来实现和Js的交互,在程序中调用Js代码,
只需要将webView控件的支持Js的属性设置为true,
然后通过loadUrl就可以直接进行调用,如下所示:
2.网页上调用Android 中 Java 代码的方法
在网页中调用 Java 代码,需要在webView 控件中添加 javascriptInterface。如下所示
在网页中,只需要像调用 JS 方法一样进行调用就可以了
3.Java 代码调用 JS 并传递参数
首先调用带参数的 JS 函数,如 function test(str) ,
然后只需要在调用JS 时传入参数即可,如下所示:
4.JS 中调用Java 函数并传递参数
首先一样需要带参数的函数形式,但需注意此处的参数需要final类型,
即得到以后不可修改,如果需要修改其中的值,可以先设置中间变量,
然后进行修改。如下所示:
然后在 HTML 页面中,利用如下代码:
即可实现调用。
个人总结的最全面的Java与JS交互的文章
总结的确实挺全面的,我想问一下,如果以你所说,js调用native带参方法,并且需要native返回数据,在native端直接return能调用起js里的callback方法吗?