安卓Native和H5页面进行交互
安卓Native和H5页面进行交互
1、H5页面调用安卓Native界面
1)通过给webView添加JsInterface,安卓提供接口,让H5来进行调用
a)安卓写一个类,里面的方法需要用通过注解来表明是java接口的方法。
eg:
private class WebInterface {
@JavascriptInterface
public void callFromJSBasicDataType(int x, float y, char c, boolean result) {
String str = "-" + (x + 1) + "-" + (y + 1) + "-" + c + "-" + result;
Log.e("tttt", "tttttt"+str);
}
@JavascriptInterface
public void callAndroidMethod() {
Log.e("tttt", "tttttt2");
}
}
b)设置webView可以支持js
eg:
webView.getSettings().setJavaScriptEnabled(true);
c)给webView添加js接口类,并取别名
webView.addJavascriptInterface(new WebInterface(), "robot");
至此,安卓的配置完成了。
下面配置HTML页面
在代码中添加下面的代码,如果加载了页面了,就会调用起别名叫robot这个接口类里面的js接口方法
<p>
<button onclick="robot.callFromJSBasicDataType(1,2,'a',true);">点击我调用android 方法</button>
</p>
2)通过设置webview的setWebViewClient。安卓通过url跳转时的改变,来进行不同的操作
当webview加载的页面出现变化的时候,可以进行不同的操作,例如访问站外的网址,或者黑名单的网址进行提示
eg:
wb.setWebViewClient(new Custom());
private class Custom extends WebViewClient{
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
Log.e("tttt", url);
if (url.contains("bai")) {
Dialog d=new Dialog(MainActivity.this);
d.setTitle("ttttt");
d.show();
return true;
}
return false;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// TODO Auto-generated method stub
super.onPageStarted(view, url, favicon);
}
@Override
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
super.onPageFinished(view, url);
}
}
2、安卓Native界面调用H5方法
主要就是通过webview的LoadUrl方法
eg:
webView.loadUrl("javascript:noParamFunction();");
注:需要页面加载完成之后调用才有效。因为js脚本需要完全加载到页面中才可以调用到,否则没有任何效果
安卓Native和H5页面进行交互的更多相关文章
- Hybrid APP之Native和H5页面交互原理
Hybrid APP之Native和H5页面交互原理 Hybrid APP的关键是原生页面与H5页面直接的交互,如下图,痛过JSBridge,H5页面可以调用Native的api,Native也可调用 ...
- Hybrid APP基础篇(三)->Hybrid APP之Native和H5页面交互原理
本文已经不维护,新地址: http://www.cnblogs.com/dailc/p/8097598.html 说明 Hybrid模式原生和H5交互原理 目录 前言 参考来源 前置技术要求 楔子 A ...
- android网页打印,安卓网页打印,h5页面打印,浏览器打印,js打印工具
Android设备打印比较麻烦,一般设备厂商都提供原生app开发的SDK,我们web开发者为难了,不会原生开发啊 给大家提供一个思路,实现web加壳,利用打印浏览器实现 简单来说就是把我们的web页面 ...
- 安卓 apk 嵌入H5页面只显示部分
安卓 apk 嵌入H5页面只显示部分(有空白页出现) 解决方案 没有加载的是js部分,需要在安卓那边加上一串代码 webView.getSetting().setDomStorageEnabled(t ...
- 本地调试H5页面
摘要 详细讲述微信H5页面调试(安装在安卓或iOS手机上的),钉钉内H5页面的调试,QQ.微博以及各浏览器上H5页面的调试方法 背景 大学毕业快要一年了,用leader的话说我也是有一年开发经验的前端 ...
- Native与H5交互的一些解决方法
一. 原生代码中直接加载页面 1. 具体案例 加载本地/网络HTML5作为功能介绍页 2. 代码示例 //本地 -(void)loadLocalPage:(UIWebView*)webVi ...
- Android中Native和H5交互
1.概述 时至今日,H5的跨平台性越发凸显优势,一套代码适配android.ios,既能减少开发成本,又便于更新与维护.但是native的性能体验也确实更佳,尤其体现在复杂界面和频繁变化的界面上.事实 ...
- iOS原生App与H5页面交互笔记
文/MikeZhangpy(简书作者)原文链接:http://www.jianshu.com/p/4ed3e5ed99c6著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 最近在做一个项 ...
- H5页面适配所有iPhone和安卓机型的六个技巧
http://www.th7.cn/web/html-css/201605/166006.shtml http://www.th7.cn/web/html-css/201601/153127.shtm ...
随机推荐
- Nginx+IIS+Redis 处理Session共享问题 2
接下来主要说下利用nginx来测试 两台Windows server 1.10.120.131.210 - 端口84部署demo 2.10.120.131.211 - 端口84部署demo ngi ...
- KoaHub.JS基于Node.js开发的处理和显示日期代码
moment Parse, validate, manipulate, and display dates A lightweight JavaScript date library for ...
- osprofiler在openstack Cinder里的使用
最近在做OpenStack Cinder driver的性能调试, 之前一直是通过在driver里面加入decorator,完成driver各个接口的执行时间的统计. 其实在openstack,已经在 ...
- Centos 7 上安装使用 vscode
#系统信息 Linux localhost.localdomain 3.10.0-327.el7.x86_64 x86_64 x86_64 x86_64 GNU/Linux 进入 vscode 下载 ...
- linux 私房菜 CH7 Linux 档案与目录管理
路径 ``` . 此层目录 .. 上一级目录 前一个工作目录 ~ 当前用户的家的目录 ``` 变换目录 cd 显示目录 pwd [-P] -P 显示出确实的路径,而非使用链接 (link) 路径. 创 ...
- Sublime Text 3常用插件安装(持续更新)
首先声明一下,小编是做后台开发出身,但是总是想捣鼓一些小的网站出来,可能是完美心作祟,感觉前端这边不能差事,所以就自己上了,一开始是用eclipse来开发的,具体原因忘了,也不知道怎么就开始用Subl ...
- El表达式的用法个人总结
EL表达式的好处: 通过EL可以简化在JSP开发中对对象的引用,从而规范页面代码,增加程序的可读性及可维护性. EL表达式的几个特点: 1:可以与jsp标签库结合使用,也可以与javascript语 ...
- STL部分的实现
C++的STL很强大,里面实现很多功能 就平时经常会用到的vector之类的,自己实现一下, 有哪块错误的希望大神给予指点 vector类模板 template<typename T>cl ...
- MySQL入门(下)
1. 课程回顾(很清晰明了) mysql基础 1)mysql存储结构: 数据库 -> 表 -> 数据 sql语句 2)管理数据库: 增加: create database 数据库 de ...
- HTML——超文本标记语言(表单及12个表单元素)
表单 格式: <form action=" " method="get/post" placehoder=" "></f ...