在android中怎样调用本地js文件里的方法并得到返回值

在android中怎样调用本地js文件里的方法并得到返回值,第1张

您好,很高兴能帮助您,

Android中webview和js之间的交互

1android中利用webview调用网页上的js代码

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

mWebViewgetSettings()setJavaScriptEnabled(true);

mWebViewloadUrl("javascript:test()");

2 网页上调用android中java代码的方法

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

mWebViewaddJavascriptInterface(new Object() {

public void clickOnAndroid() {

mHandlerpost(new Runnable() {

public void run() {

ToastmakeText(Testthis, "测试调用java", ToastLENGTH_LONG)show();

}

});

}

}, "demo");

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

<div id='b'><a onclick="windowdemoclickOnAndroid()">bc</a></div>

3 Java代码调用js并传参

首先需要带参数的js函数,如function test(str),然后只需在调用js时传入参数即可,如下所示:

mWebViewloadUrl("javascript:test('aa')");

4Js中调用java函数并传参

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

mWebViewaddJavascriptInterface(new Object() {

public void clickOnAndroid(final int i) {

mHandlerpost(new Runnable() {

public void run() {

int j = i;

j++;

ToastmakeText(Testthis, "测试调用java" + StringvalueOf(j), ToastLENGTH_LONG)show();

}

});

}

}, "demo");

然后在html页面中,利用如下代码<div id='b'><a onclick="windowdemoclickOnAndroid(2)">bc</a></div>,

即可实现调用

你的采纳是我前进的动力,还有不懂的地方,请你继续“追问”!

如你还有别的问题,可另外向我求助;答题不易,互相理解,互相帮助!

1、不一定。

2、JS中的方法可以写返回值,使用return即可,例如:

function add(a, b){

return a + b;

}

alert(add(1, 2));//3

3、如果函数里不写return,则函数会返回undefined,可以根据需要判断是否有返回值

4、假如不写return的话,系统默认就是返回一个undefined,表示该函数没有写返回值。

ajax是异步的请求,success里的函数会在请求成功后才会执行,也就是flag只会在请求完成后才会将datatotal赋值给flag。而return flag是在确认要发起请求后就执行了。所以除非请求完成,否则就是null

不知道你的HdUtils是什么封装的,jqurey的加async: false参数,纯ajax就加asyn: false,这样试试

var searchReportByld = function(shipreportdocId){

    var flag = null;

    var builderShipReport = new HdEzuiQueryParamsBuilder();

    if(shipreportdocld != ""){

        builderShipReportsetAndClause("shipreportdocId", shipreportdocId, "=", "and");

    }

    HdUtilsajaxpost({

        url: "/webresources/login/work/ShipReport/find",

        data: buildershipReportbuild(),

        success: function(data){

            flag=datatotal;

        },

        async: false

    });

    return flag;

};

返回值

就是return后的东西,比如function

a(){return

true;}这样用一个变量接收a返回的值就是true,如果直接调用也可以,返回值可以不处理的,看情况的。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/12171015.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存