当时业务的需求是这样的,H5有一个活动商品列表的界面,IOS和Android共用这一个界面,点击商品可以跳转到Android原生的商品详情界面并传递商品ID;  大概就是点击H5界面携带参数跳转到Android原生界面

好了,需求已经分析完毕了,Android只需要获取H5的点击事件和传递的参数;

来,上代码:

/启用支持javascriptWebSettings settings = webView.getSettings();settings.setJavaScriptEnabled(true);

 

Android4.2以上需要@JavascriptInterface注解,其目的是为了安全;

 

public class JavaScriptObject{    public JavaScriptObject(Activity activity) {    }    @JavascriptInterface    public void setToken(String goodsId){        //goodsId就是商品的ID,这里拿到商品的ID后直接跳转到商品详情页,并把id传递过去    }    @JavascriptInterface    public void definedShare(String ShareJson){    }}

 

/**添加js接口,参数1是本地类名,参数2是标记;H5调用需要 "window.标记.类名中的方法名" 才能调用*/webView.addJavascriptInterface(new JavaScriptObject(this), "android");

到这里Android端需要写的就完成了;

这个是我截的图,可以看一下:

Android原生和H5交互;Android和H5混合开发;WebView点击H5界面跳转到Android原生界面。_第1张图片

这里是H5需要写的代码:

    

调用原生setToken方法

 

----------------------------------------------------------------------------------------------------------------------------------

附:如果在Android端调用H5中的方法:

 /*  * Android调用H5中的方法  *///传固定字符串可以直接用单引号括起来 mWebView.loadUrl("javascript:alertMessage('哈哈')");//访问H5里带参数的方法,alertMessage(message)为H5里的方法 //当出入变量名时,需要用转义符隔开 String content="1016"; mWebView.loadUrl("javascript:alertMessage(\""   +content+   "\")"   );  //Android调用有返回值js方法,安卓4.4以上才能用这个方法 mWebView.evaluateJavascript("11", new ValueCallback() {     @Override     public void onReceiveValue(String value) {         Log.i(TAG, "js返回的结果为=" + value);     } });

 

抽成方法:

 

 private void callJS(String callback, String status) {        if (TextUtils.isEmpty(status)) {            if (AndroidUtils.isKitkat()) {                mWebView.evaluateJavascript("javascript:" + callback + "()", null);            } else {                mWebView.loadUrl("javascript:" + callback + "()");            }        } else {            if (AndroidUtils.isKitkat()) {                mWebView.evaluateJavascript("javascript:" + callback + "('" + status + "')", null);            } else {                mWebView.loadUrl("javascript:" + callback + "('" + status + "')");            }        }    }public static boolean isKitkat() {        return Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;    }

 

更多相关文章

  1. Android 获取WIFI MAC地址的方法
  2. android 无界面通过开机下载
  3. Android键盘自适应方法.
  4. Android常用布局之LinearLayout(线性布局)仿酷狗登录界面
  5. Android的布局方法
  6. Android 界面中隐藏项目名称

随机推荐

  1. Android 获取通讯录信息
  2. 探索Android该Parcel机制(上)
  3. 在下方的tab页
  4. android BadTokenException之token is no
  5. android 内存清理
  6. android截屏代码:C++实现
  7. GoogleAndroid常用的Android常量
  8. 读取raw文件下文件内容
  9. android开发--RelativeLayout用到的一些
  10. Android(安卓)ImageSpan与TextView中的te