Android中Js与java的交互

原创 2015年07月10日 18:05:11

在最近项目开发中频繁用到Js与Java的交互,今天把相关知识点整理出来,欢迎大家吐槽。啪啪啪~
1、Js调用Java中的方法:
a、对WebView进行设置

mWebView.addJavascriptInterface(new DmJavaScriptInterface(),"androidObject"); 

在Js中androidObject就是DmJavaScriptInterface的一个对象,通过这个对象可以调用类中的相关方法
b、实现DmJavaScriptInterface类

    final class DmJavaScriptInterface {
        DmJavaScriptInterface() {
        }

        @JavascriptInterface        
        public void getPhoto() {
            Log.e(TAG,"js调用原生方法");
            LsUIHelper.getInstance().showLsChoosePicListActivity(mContext, 13);
        }

        @JavascriptInterface        
        public String getToken() {
            String token = getUserToken(mContext);  
//              Log.e(TAG, "getToken token :=" + token);    

            return token;
        }

        @JavascriptInterface
        public void finishSubmit() {
            LsFeedbackListActivity.this.finish();
        }

    }

在Js中通过androidObject.getPhoto(),androidObject.getToken(),androidObject.finishSubmit()就可以实现调用Java端的方法。
2、Java调用Js方法
基本格式:webView.loadUrl("javascript:sayHello()");
根据是否有参数和是否有返回值可以分为以下几类(sayHello()为Js中被调用的方法名):
a、无参数无返回值

String call = "javascript:satHello()";
webView.loadUrl(call);

b、有参数无返回值

String str = "你好";
String call = "javascript:satHello(\""+str+"\")";
webView.loadUrl(call);

c、有参数有返回值
这类比较特殊,得分两种情况。在Android4.4之前不提供调用Js函数并获取返回值的方法。解决办法是先让java调用Js的方法(有参数无返回值),然后Js在改方法中回调Java的方法,并将结果作为参数传递给Java的方法。相关代码如下:
1、Java调用Js方法

String str = "你好";
String call = "javascript:satHello(\""+str+"\")";
webView.loadUrl(call);

2、Js中调用Java的方法:

Function sayhello(str) {
Window.androidObject.onResultContent(“hello”);
}

3、Java在回调方法中获取Js函数的返回值

@JavascriptInterfacepublic void onResultContent(int result) {  
    Log.i(LOGTAG, "onResultContentresult=" + result);
}

Android4.4之后使用evaluateJavascript即可
Js端的方法:

function getGreetings() {     
 return 1;
 }

Java端代码


private void testEvaluateJavascript(WebView webView) {          webView.evaluateJavascript("getGreetings()", new ValueCallback<String>() {  
@Override  
public void onReceiveValue(String value) {     
 Log.i(LOGTAG, "onReceiveValue value=" + value); 
              }
    });
}

Android WebView Java和JavaScript的交互

现在的APP,大多是NA+H5的,也就是集合了Native APP和Web APP的优点,既保证了用户体验,又使得APP在一定程度上具备动态更新的能力,同时又利于跨平台开发,减少了人力成本。 一、Ja...
  • hello2mao
  • hello2mao
  • 2017年01月04日 09:55
  • 335

安卓混合开发实例——JS与Java的交互

今天说说安卓混合开发。 曾经有一个话题是web终会一统app,然后我们看到随着时间的推移。web越来越强大(H5啊,JS各种框架啊),但同时原生app也在不断发展。 或许在将来还会再有这种话题论战...
  • lebang08
  • lebang08
  • 2016年10月18日 13:42
  • 1826

Android中Java 与 JavaScript交互

1、java 访问 javaScript 2、javaScript 访问 java
  • gufeilong
  • gufeilong
  • 2016年09月13日 20:22
  • 639

android下基于开源浏览器项目crosswalk的js与java交互

可以更加轻松的实现java与js交互,而且没有webview的安全注入漏洞,不需要引入额外的js文件,保证java接口注入成功(使用的crosswalk的extension实现的) android下基...
  • wosisuisiwo
  • wosisuisiwo
  • 2016年07月02日 16:16
  • 427

android 的webView加载h5,和h5的交互(java和JavaScript的交互)

Android提供了一个很强大的WebView控件用来处理Web网页,而在网页中,JavaScript又是一个很举足轻重的脚本。本文将介绍如何实现Java代码和Javascript代码的相互调用。(通...
  • u013424496
  • u013424496
  • 2016年08月02日 10:01
  • 8044

简单的实现 Js和java交互

效果:点击img标签实现图片的交替显示,实现需要懂点js,哈哈。 //上代码 public class MainActivity extends AppCompatActivity { ...
  • u011057161
  • u011057161
  • 2016年10月17日 18:23
  • 5177

webView中JS与Java完美交互

webView中JS与Java完美交互众所周知webView中的addJavascriptInterface这个方式是注入一个Java对象给JS调用的,但这种方式在4.2之前它还是很脆弱的,安全性也很...
  • Lennie_Z
  • Lennie_Z
  • 2017年07月19日 17:19
  • 1948

Android与HTML+JS交互入门

在Android开发中,越来越多的商业项目使用了Android原生控件与WebView进行混合开发,当然不仅仅就是显示一个WebView那么简单,有时候还需要本地Java代码与HTML中的javasc...
  • leejizhou
  • leejizhou
  • 2016年03月15日 13:01
  • 38036

Android中 WebView与Javascript简单交互

从目前市面的大部分App来讲,大致分成Native App、Web App、Hybrid App三种方式,Hybrid App单纯的数据展示我们直接采用WebView来渲染就可以了,但是有时候可能会用...
  • lvshuchangyin
  • lvshuchangyin
  • 2016年10月21日 10:42
  • 1180

WebView---Android与js交互实例

Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true Android(Java)与JavaScript(HT...
  • IT1039871366
  • IT1039871366
  • 2015年06月05日 09:37
  • 45312
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android中Js与java的交互
举报原因:
原因补充:

(最多只允许输入30个字)