yzc261亚洲城官网备用地址js怎么和安卓交互

( yzc261亚洲城官网备用地址 )

我们的应用想包成一个安卓APP,但是没有用phonegap,用的似乎是原生的,具体我也不太明白。我主要负责web,现在需要和安卓的哥们儿进行交互,它暴露给我一个函数比如说window.haha.hehe,我调用这个之后安卓客户端就能调用原生的地图。我想要获取地图信息,但是不知道该怎么做。如果我在window.haha.hehe里传一个回调函数,但是android那边应该怎么写呢?网上看到一种方法,是把回调函数变成字符串传过去,安卓那边解析后执行。但是那样执行的作用域是全局的,根本无法访问到我调用window.haha.hehe时作用域里的变量啊。
有没有什么比较好的方法呢,谢谢啦

试试Crosswalk+Cordova,于是你就可以自己做应用开发了

你这边需要封装好,把你函数声明完成后,注册到一个全局的函数列表里,并把这个函数调用方式通过字符串或者其他方式传入到Android提供的函数里。

假设调用方式是callback[3]poi
那么可以window.haha.hehe"callback[3]";告诉Android端调用callback[3]就可以啦。
这里很类似jsonp。

Android端就可以使用

javamWebView.loadUrl"javascript:callback[3]poi";

调用到你的回调函数。

另外,这和你的变量作用域没有关系,举个例子

jsvar callback = [];
var clou = function  {
    var a = 3;
    var p = function poi {
        console.loga;
    }
    callback.pushp;
};
clou;
callback[0];

你看,能输出3

之前看到的博客,记下来了。

WebView 与 JS 交互

1.Android 利用 webView 调用网页上的JS 代码

Android 中可以通过WebView来实现和Js的交互,在程序中调用Js代码,
只需要将webView控件的支持Js的属性设置为true,
然后通过loadUrl就可以直接进行调用,如下所示:

mWebView.getSettings.setJavaScriptEnabletrue;     
mWebView.loadUrl"javascript:test";

2.网页上调用Android 中 Java 代码的方法

在网页中调用 Java 代码,需要在webView 控件中添加 javascriptInterface。如下所示

mWebView.addJavascriptInterfacenew Object {     
  public void clickOnAndroid {    
    mHandler.postnew Runnable {    
      public void run {   
        Toast.makeTextTest.this, "测试调用java", Toast.LENGTH_LONG.show;   
      }   
    };   
  }   
}, "demo";

在网页中,只需要像调用 JS 方法一样进行调用就可以了

<div id=b><a onclick="window.demo.clickOnAndroid">b.c</a></div>

3.Java 代码调用 JS 并传递参数

首先调用带参数的 JS 函数,如 function teststr ,
然后只需要在调用JS 时传入参数即可,如下所示:

mWebView.loadUrl"javascript:testaa";  

4.JS 中调用Java 函数并传递参数

首先一样需要带参数的函数形式,但需注意此处的参数需要final类型,
即得到以后不可修改,如果需要修改其中的值,可以先设置中间变量,
然后进行修改。如下所示:

mWebView.addJavascriptInterfacenew Object {  
  public void clickOnAndroidfinal int i {   
    mHandler.postnew Runnable {   
      public void run {   
        int j = i;   
        j++;   
        Toast.makeTextTest.this,    
        "测试调用java" + String.valueOfj, Toast.LENGTH_LONG.show;   
      }   
    };   
  }   
}, "demo"; 

然后在 HTML 页面中,利用如下代码:

<div id=b><a onclick="window.demo.clickOnAndroid2">b.c</a></div> 

即可实现调用。

个人总结的最全面的Java与JS交互的文章

总结的确实挺全面的,我想问一下,如果以你所说,js调用native带参方法,并且需要native返回数据,在native端直接return能调用起js里的callback方法吗?

该答案已被忽略,原因:

(看完/读完)这篇文章有何感想! yzc261亚洲城官网备用地址的分享…

发表评论

电子邮件地址不会被公开。 必填项已用*标注