文档章节

android与JavaScript互相调用

 下雨天_冒泡泡
发布于 2017/01/19 15:49
字数 391
阅读 12
收藏 0

android与JavaScript互相调用
http://www.cnblogs.com/mengdd/archive/2013/0
3/02/2940185.html
http://blog.csdn.net/singleton1900/article/d
etails/8776336
http://www.cnblogs.com/glony/articles/214544
7.html

1.JavaScript调用android

1>  新建类(如:WebAppInterface):作为桥梁
用来处理JavaScript调用的android方法,比如:
JavaScript里面的弹框,要对其弹框显示的内容处
理,则再次写入处理方法

public class WebAppInterface{

    Context mContext;
    
    WebAppInterface(Context c){

    mContext=c;
  }

  public void showToast(String toast){

    Toast.makeText(mContext,"互相调
用",Toast.LENGTH_LONG).show();  

  }

}


2>   MainActivity操作显示界面
将这个类和WebView中的JS代码绑定

WebView webview=(WebView)findViewById
(R.id.webview);
webview.addJavascriptInterface(new
WebAppInterface(this),"Android");

给这个对象起的别名叫“Android”。
这个就创立了一个接口名,叫“Android”,运行
在WebView中的JS代码可以通过这个名字调用
WebAppInterface类中的showToast()方法

(猜想:下面是JavaScript代码
<input type="button" value="Say hello"
onClick="showAndroidToast('Hello
Android!')"/>

<script type="text/javascript">
    function showAndroidToast(toast)
    {
        Android.showToast(toast);
    }
</script>


3>需要设置chromehandler
 这个问题让我纳闷了好久,因为开始的时候我写
的程序,JS代码中的按钮会出现在WebView中,但
是点击下去后,不会弹出相应的对话框之类。

  也就是说JS代码调用自己也没有执行?

  同样的代码在别的地方执行可以正常弹出啊。

 后来找了半天原因,才发现两个问题:

  1.网页按钮按下后不出现JS对话框是因为没有
设置chrome handler,需要设置如下:
 myWebView.setWebChromeClient(new
WebChromeClient()
        {

            @Override
            public boolean onJsAlert(WebView
view, String url, String message,
                    JsResult result)
            {
                // TODO Auto-generated
method stub
                return super.onJsAlert(view,
url, message, result);
            }

        });


 

© 著作权归作者所有

粉丝 3
博文 29
码字总数 16035
作品 0
西安
私信 提问
android h5 js 匿名函数通信

android js 互相调用 支持js匿名函数接收 支持js json对象接收 支持js函数返回值获取 通过注解注入js方法,支持自定义方法名 github https://github.com/lwugang/android-js-bridge Add it i...

liwg
2018/04/25
0
0
【quickhybrid】H5和Native交互原理

前言 架构的核心就是交互,而实现这个交互的前提是弄清楚H5和Native端的交互 本文主要介绍Native端(Android/iOS)和H5端(泛指前端)的交互原理 (之前也整理过类似的文章,本系列重新梳理)...

dailc
02/18
0
0
Android webview 与 js(Vue) 交互

js 与原生交互分为两种情况:js 调用原生方法,原生调用 js 方法。 本文将对这两种情况分别讲解,H5 端用 实现。 一、前期准备(Vue项目准备) 本文的 H5 端用 实现,所以在正式开始前先把 ...

solocoder
2018/08/23
0
0
WebView深度学习(一)之WebView的基本使用以及Android和js的交互

前言:随着市场需求的不断变化,原生安卓已经无法满足客户的需要了,现在很多app都在使用Android和h5的交互实现某些功能,比如商品详情页,文章详情页面,商品点评页面,还有某些复杂的展示页...

aweiloveandroid
2017/07/01
0
0
Android与JS互相调用以及注意

最近项目中经常使用Html5而Android与JS调用经常会用到,这里记录一下,测试系统5.0以上。 这里先贴一下源码 Activity: package jwzhangjie.com.webviewandjs; import android.content.Contex...

jwzhangjie
2015/08/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

堆”和“栈

C++作为一款C语言的升级版本,具有非常强大的功能。它不但能够支持各种程序设计风格,而且还具有C语言的所有功能。我们在这里为大家介绍的是其中一个比较重要的内容,C++内存区域的基本介绍。...

SibylY
28分钟前
3
0
总结:Https

一、介绍 简单理解,https即在http协议的基础上,增加了SSL协议,保障数据传输的安全性。 它由以前的http—–>tcp,改为http——>SSL—–>tcp;https采用了共享密钥加密+公开密钥加密的方式 ...

浮躁的码农
31分钟前
4
0
数据库表与表之间的一对一、一对多、多对多关系

表1 foreign key 表2 多对一:表 1 的多条记录对应表 2 的一条记录 利用foreign key的原理我们可以制作两张表的多对多,一对一关系 多对多: 表1的多条记录可以对应表2的一条记录 表2的多条记...

Garphy
今天
7
0
MySQL 表崩溃修复

MySQL日志报错 2019-10-19 13:41:51 19916 [ERROR] /usr/local/mysql/bin/mysqld: Table './initread_hss/user_info' is marked as crashed and should be repaired2019-10-19 13:41:51 1......

雁南飞丶
今天
6
0
Error和Exception

1.Error类和Exception类都是继承Throwable类 2.Error(错误)是系统中的错误,程序员是不能改变的和处理的,是在程序编译时出现的错误,只能通过修改程序才能修正。一般是指与虚拟机相关的问...

大瑞清_liurq
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部