webview与壳交互的几种方式

1.js调用android中的方法

(1)通过addJavascriptInterface通信

android中webview增加addJavascriptInterface的方法,

webView.addJavascriptInterface(new JavaScriptInterface(),"Demo");

对JavaScriptInterface实现构造函数,增加方法,js可以直接采用命名空间的方式,调用定义的方法。

final class JavaScriptInterface{
        JavaScriptInterface(){
        }
        //注意:17+版本,必须申明注解
        @JavascriptInterface
        public void clickOnAndroid() {
            mHandler.post(new Runnable() {
                public void run() {
                    webView.loadUrl("javascript:wave()");
                }
            });
        }
    }

html中可以直接通过window.Demo.clickOnAndroid调用android中的方法。

(2)通过window.location(url)

url可以做一个接口定义,比如url=open?title=1&name=2&callback

定义一个方法,加参数,回调函数。

android在MyWebViewClient中的shouldOverrideUrlLoading方法会进行拦截。

在此方法中可以对url进行解析,触发相应的接口方法,达到了js调用android方法,对壳做一些交互处理。

=====

分析:

js调用android或者ios中的方法,建议采用window.location的方式,统一定义一套接口,采用相同的url进行解析。这样,在前端js处理时就无需为android、ios各自做判断,定义不同的调用机制,通用性也比较强。

2.android中调用js的方法

webView.loadUrl("javascript:wave()");

html中有个function wave(){}方法,通过该方式可以直接调用wave()。

通过这种模式,js中的方法都是暴露在window最顶级的对象上的。

时间: 2024-10-06 18:58:07

webview与壳交互的几种方式的相关文章

Android中WebView的JavaScript代码和本地代码交互的三种方式

一.Android中WebView的漏洞分析 最近在开发过程中遇到一个问题,就是WebView使用的时候,还是需要解决之前系统(4.2之前)导致的一个漏洞,虽然现在这个系统版本用户很少了,但是也不能忽视,关于这个漏洞,这里就不多做解释了,可能有的同学早就了解了,本来想写一篇文章详细介绍一下,但是网上的知识太多了,而且都很详细,就没弄了,这里大致简单明了的说几句: 第一.漏洞产生的原因 这个漏洞导致的原因主要是因为Android中WebView中的JS访问本地方法的方式存在缺陷,我们做过交互的都知

深入分析:Fragment与Activity交互的几种方式(一,使用Handler)

这里我不再详细介绍那写比较常规的方式,例如静态变量,静态方法,持久化,application全局变量,收发广播等等. 首先我们来介绍使用Handler来实现Fragment与Activity 的交互. 第一步,我们需要在Activity中定义一个方法用来设置Handler对象. public void setHandler(Handler handler) { mHandler = handler; } 第二步,在Fragment中的回调函数onAttach()中得到Fragment所在Acti

深入分析:Fragment与Activity交互的几种方式(三,使用接口)

第一步:我们需要在Fragment中定一个接口,并确保我们的容器Activity实现了此接口: public interface onTestListener { public void onTest(String str); } @Override public void onAttach(Activity activity) { super.onAttach(activity); // 这个方法是用来确认当前的Activity容器是否已经继承了该接口,如果没有将抛出异常 try { mCal

基于MVC4+EasyUI的Web开发框架经验总结(12)--利用Jquery处理数据交互的几种方式

在基于MVC4+EasyUI的Web开发框架里面,大量采用了Jquery的方法,对数据进行请求或者提交,方便页面和服务器后端进行数据的交互处理.本文主要介绍利用Jquery处理数据交互的几种方式,包括获取数据并显示,插入新数据到服务器,更新数据,删除数据等操作. 1.利用Jquery获取数据并显示 为了顺利获取数据,我们需要保持页面端调用和服务器端保持一致,并相应的把数据转换或者封装为对象实体进行处理. 下面我们以一个简单的全国省份.全国城市.全国城市行政区的案例进行Demo代码的介绍.   总

基于MVC+EasyUI的Web开发框架经验总结(12)--利用Jquery处理数据交互的几种方式

在基于MVC4+EasyUI的Web开发框架里面,大量采用了Jquery的方法,对数据进行请求或者提交,方便页面和服务器后端进行数据的交互处理.本文主要介绍利用Jquery处理数据交互的几种方式,包括获取数据并显示,插入新数据到服务器,更新数据,删除数据等操作. 1.利用Jquery获取数据并显示 为了顺利获取数据,我们需要保持页面端调用和服务器端保持一致,并相应的把数据转换或者封装为对象实体进行处理. 下面我们以一个简单的全国省份.全国城市.全国城市行政区的案例进行Demo代码的介绍.   总

动态数据与后台交互的两种方式

第一种方式: javabean: 1 public class BusLoanInfoShop { 2 private Integer id; 3 private Integer bid; 4 private String shopName; 5 private String platformName; 6 private String shopLevel; 7 private String operatingPeriod; 8 private String shopOwner; 9 priva

Python 与 C/C++ 交互的几种方式

python作为一门脚本语言,其好处是语法简单,很多东西都已经封装好了,直接拿过来用就行,所以实现同样一个功能,用Python写要比用C/C++代码量会少得多.但是优点也必然也伴随着缺点(这是肯定的,不然还要其他语言干嘛),python最被人诟病的一个地方可能就是其运行速度了.这这是大部分脚本语言共同面对的问题,因为没有编译过程,直接逐行执行,所以要慢了一大截.所以在一些对速度要求很高的场合,一般都是使用C/C++这种编译型语言来写.但是很多时候,我们既想使用python的简介优美,又不想损失太

android客户端与服务端交互的三种方式

android客户端向服务器通信一般有以下选择: 1.传统的java.net.HttpURLConnection类 2.apache的httpClient框架(已纳入android.jar中,可直接使用) 3.github上的开源框架async-http(基于httpClient) ---------------------------------------------------------------------------------- 下面分别记录这三种方式的使用, 传统方式: /**

Nginx和php交互的两种方式

Unix socket 也叫IPC socket  也就是进程间通信套接字用于同一台主机上的不同进程间交换数据 TCP socket IP socket要利用主机的传输层(tcp),可以用于同一台主机上不同进程间的通信,也可以用于网络上不同主机间的通信. 效率区别 TCP(IP) socket 通过本机回环地址127.0.0.1加端口实现,要走完全部的网络环节.费开销. 配置区别 fastcgi_pass 127.0.0.1:9000 fastcgi_pass unix:/usr/local/p