永发信息网

在Android上怎样实现JAVA和JS交互

答案:2  悬赏:0  手机版
解决时间 2021-04-05 11:35
在Android上怎样实现JAVA和JS交互
最佳答案
android调用js方法比较简单,一行代码搞定。

mWebView.loadUrl("javascript:test('" + aa+ "')");//test就是你js方法,然后是参数然后是js调用android方法,比较复杂。
b.c这个window.wst的wst就是Android中自己定义的标识名称,clickOnAndroid方法就是安卓中自定义的方法名。
mWebView.addJavascriptInterface(new MyTest(), "wst");//给android添加一个js接口,标识名称wst
//这里的代码是个类部类
private final class MyTest{
 @JavascriptInterface
 public void clickOnAndroid(int number) {
    MyActivity.this.runOnUiThread(new Runnable() {
        @Override
        public void run() {
          Log.i("number",number);//这里所有代码必须写到主线程中,否则报错。
        }
    });
  }
}这样就能实现js调用android。
两个方法最重要的都是要启用webview的js功能。
// 启用javascript
mWebView.getSettings().setJavaScriptEnabled(true);哪里不懂可以继续追问我

全部回答

java和js交互分为三种情况,分别是:
1 调用网页上的js代码
Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true,,然后通过loadUrl就可以直接进行调用,如下所示:
mWebView.getSettings().setJavaScriptEnabled(true);mWebView.loadUrl("javascript:test()");
2 网页java代码的方法
在网页中调用java代码,需要在webview控件中添加javascriptInterface。如下所示:
mWebView.addJavascriptInterface(newObject() { 
publicvoid clickOnAndroid() { 
mHandler.post(newRunnable() { 
publicvoid run() { 
Toast.makeText(Test.this,"测试调用java", Toast.LENGTH_LONG).show();

}); 

},"demo");
3 Java代码调用js并传参
首先需要带参数的js函数,如functiontest(str),然后只需在调用js时传入参数即可,如下所示:
mWebView.loadUrl("javascript:test('aa')");
4.Js中调用java函数并传参
首先一样需要带参数的函数形式,但需注意此处的参数需要final类型,即得到以后不可修改,如果需要修改其中的值,可以先设置中间变量,然后进行修改。如下所示:
mWebView.addJavascriptInterface(newObject() { 
publicvoid clickOnAndroid(final int i) { 
mHandler.post(newRunnable() { 
publicvoid run() { 
intj = i;
j++;
Toast.makeText(Test.this,"测试调用java" + String.valueOf(j), Toast.LENGTH_LONG).show();
}
});

},"demo");
然后在html页面中,利用如下代码b.c

下面是安卓无忧中js 与安卓相互调用的效果图,可以百度一下安卓无忧,点击源码,看看里面的源码。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
求中国古代神话中的奇禽异兽名字
一手拿桃,一手拿动物的是哪位佛菩萨?
单选题《金融时报》载文指出,银行卡与现金、
摩根换成英语是怎么写的?
宣告发放现金股利的会计分录是什么?
在天猫only官方店看中一条牛仔裤,没尺码了,
高等数学,所以那个后面一步,π/8是怎么
店铺泄露顾客信息举报后对卖家有处罚吗?
海昌星机美人半年 美瞳包装盒 有没有这款啊
当当网怎么解绑手机号,人人网 绑定手机 丢了
1987年2月18日是什么八字
单选题下列对生活中物理现象的分析,正确的是
判断题人类的进化过程中最显著的变化是脑容量
用大水钢养金鱼,可以不换水吗?
孩子欢送祝福语,搞笑的祝福语 欢送上一届
推荐资讯
暗恋八月长安经典语录,描写8月的诗句有哪些
单选题商鞅变法促进秦国封建化的的核心措施是
氟和钫有什麽特性
明年孩子出生时间刚好可以上学,请问几
开讲啦李明启语录,以《开讲啦》易中天为嘉宾
爱爱时老公喜欢扭我屁股疼得我大叫
华为mates手机的主页在没任务的时候怎么变成
Ci5与G3260可以互换吗
从惠州淡水立交桥有没有到大亚湾的车…
兔子不咬磨牙的方块咬笼子还有,兔子一次喝多
上网通缉玩网络游戏用自己身份证登记能被抓吗
物体振动得越快,频率A.越小B.越大C.不变D.频
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?