1.概述

       在安卓开发中, 内嵌H5的页面的情况越来越多, 很多时候我们需要和H5进行相互调用, 比如H5调用安卓的方法 打开应用市场  等等 安卓调用H5的方法  获取网页传递的数据 等等 。交互其实是很简单的的一个问题,下面将简单的介绍Android和网页的相互调用和Js的交互

2.js互调

我现在有个需求就是获取H5的方法输出的数据  网页代码如下


如上所示, 我们需要获取到网页该方法给我提供的数据
Android端代码如下
private void initView() {    webView = (WebView) findViewById(R.id.webView);    WebSettings webSettings = webView.getSettings();    webSettings.setDomStorageEnabled(true);    //设置WebView属性,能够执行Javascript脚本    webSettings.setJavaScriptEnabled(true);    //设置可以访问文件    webSettings.setAllowFileAccess(true);    //设置Web视图    webView.setWebViewClient(new webViewClient());    // 支持js调用java   jsInAndroid相当于和H5端定义的协议    webView.addJavascriptInterface(new JSInterface(), "jsInAndroid");    // 调用H5页面的方法  无参方法 getInfo方法名    webView.loadUrl("javascript:getInfo()");    //有参方法    // webView.loadUrl("javascript:getInfo("+"'参数'"+")");    findViewById(R.id.conversation_back).setOnClickListener(new View.OnClickListener() {        public void onClick(View view) {            if (webView.canGoBack()) {                webView.goBack();//返回上一页面             } else {                finish();            }        }    });}
    
class JSInterface {    // info即H5的方法  name即H5返回的数据    @JavascriptInterface    public String info(String name) {        try {            JSONObject object = new JSONObject(name);            sharetitle = object.optString("title");            shareaddress = object.optString("shareurl");            sharepic = object.optString("pic");            sharecontent = object.optString("content");        } catch (JSONException e) {            e.printStackTrace();        }         return name;    }}
              
private class webViewClient extends WebViewClient {    @Override    public void onPageFinished(WebView view, String url) {        super.onPageFinished(view, url);        String title = view.getTitle();        // 加载网页标题        if (!TextUtils.isEmpty(title)) {            ((TextView) findViewById(R.id.conversation_title)).setText(title);        }    }    //     public boolean shouldOverrideUrlLoading(WebView view, String url) {        if (url.contains("launchagency")) {            checkApkExist();        } else {            view.loadUrl(url);        }        return true;    }}


更多相关文章

  1. Android(安卓)View获取坐标值、相对距离的方法
  2. Android从驱动层到应用程序层的通信
  3. Android(安卓)Studio 和 Unity 之间实现代码交互aar模式
  4. Android(安卓)驱动和系统开发 2. 解析模拟器GPS模块 (原创)
  5. Android(安卓)5.0 Lollipop 短彩信接收流程
  6. Android设计模式2--工厂方法模式
  7. android 系统隐藏和显示虚拟按键的几种方法(不要太详细了)
  8. android调用webservice实现手机归属查询
  9. 基于jsBridge的NA与H5交互

随机推荐

  1. MySQL对window函数执行sum函数可能出现的
  2. MySQL如何使用授权命令grant
  3. 一篇文章掌握MySQL的索引查询优化技巧
  4. 浅析mysql 定时备份任务
  5. 删除mysql服务的具体方法
  6. mysql数据存放的位置在哪
  7. 两种方法实现mysql分组计数,范围汇总
  8. 实例讲解MySQL统计库表大小
  9. 一文搞懂MySQL预编译
  10. MySQL 处理重复数据的方法(防止、删除)