- 浏览: 682761 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (141)
- java (58)
- SQL (7)
- java开源 (2)
- javascript (3)
- struts2 (2)
- oracle (6)
- junit (1)
- js报表 (1)
- jQuery (5)
- 插件安装 (1)
- myeclipse (1)
- xfire (1)
- weblogic (1)
- hibernate (6)
- loading (1)
- jbpm (3)
- 物语 (0)
- android (14)
- spring (20)
- BigDecimal (1)
- view (1)
- 总结 (2)
- application (1)
- Netty (5)
- aop (1)
- redis (7)
- double (1)
- restful (1)
- cache (3)
- profile (1)
- redisTemplate (1)
- poi (3)
- excel导出 (1)
- mysql (7)
- group (4)
- replication (4)
- proxysql (1)
- windows (1)
- version (1)
- mongodb (2)
- RocketMQ (1)
- MQ (1)
- RSA (1)
- 日志 (2)
- ip (1)
- socket (1)
- hibernate-validator (1)
- delayQueue (1)
- spring-retry (1)
- rabbitmq (3)
- httpclient (1)
- tools (1)
- 增量发布 (1)
- web (3)
- spring-boot (5)
- druid (2)
- pageHelper (1)
- freemarker (1)
- RequestMapping (1)
- 性能优化 (2)
- springBoot (1)
- docker (2)
- 安全 (0)
- 国际化 (3)
- websocket (1)
- stomp (1)
- shiro (1)
- 网络安全 (2)
- 锁 (1)
- logback (1)
最新评论
-
changerzhuo_319:
谢谢大佬, 查了一天了没解决
Spring-boot构建多模块依赖工程时,maven打包异常:程序包xxx不存在 -
迪伦少校:
spring越来越优秀的同时,也越来越复杂
spring核心技术(1) -
hbxflihua:
ivi13 写道这种方式会有个问题,假如有个商户的交易量特别大 ...
使用spring-retry实现支付系统异步通知 -
ivi13:
这种方式会有个问题,假如有个商户的交易量特别大,通知全部失败, ...
使用spring-retry实现支付系统异步通知 -
ckxlnd:
挺好的 有借鉴意义
重写DispatcherServlet获取springmvc 所有RequestMapping的url
WebView引入页面及回调处理
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@color/white" android:orientation="vertical" > <!-- 头部和尾部为重用和统一风格 --> <!-- 头部 --> <include layout="@layout/jx_two_page_header"/> <WebView android:id="@+id/wvTicketOne" android:layout_width="fill_parent" android:layout_height="fill_parent" /> <!-- 尾部 --> <include android:id="@+id/footer" layout="@layout/jx_two_footer"/> </LinearLayout>
在Activity的onCreate方法中加载页面
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.ticket_one); /** * 在android 2.3以后进行了较为严格的限制 * 该类可以用来帮助开发者改进他们编写的应用。 * 并且提供了各种的策略, * 这些策略能随时检查和报告开发者开发应用中存在的问题 */ StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() .detectDiskReads().detectDiskWrites().detectNetwork() .penaltyLog().build()); StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() .detectLeakedSqlLiteObjects().penaltyLog().penaltyDeath() .build()); Intent fromInent = getIntent(); ticketId = fromInent.getStringExtra("ticketId"); //是否管理员 String isManage = mPreferences.getString(Constants.USER_IS_MANAGE, String.valueOf(false)); //找到WebView控件 wvTicketOne = (WebView) findViewById(R.id.wvTicketOne); //设置为可访问页面JS,在Activity和页面直接互调时使用 wvTicketOne.getSettings().setJavaScriptEnabled(true); wvTicketOne.setWebViewClient(new WebViewClient()); //在onCreate 方法中调用WebView的loadUrl方法加载页面内容 wvTicketOne.loadUrl(Constants.URL_TICKET_ONE + ticketId+"&isManage="+isManage); //添加页面可访问的JS接口 wvTicketOne.addJavascriptInterface(new JavaScriptInterface(), "android"); // Activity间跳转:转到踏勘单 TextView takandan = (TextView) findViewById(R.id.tanKanDan); takandan.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(TicketOneActivity.this,TicketTanKanDan.class); intent.putExtra("ticketId", ticketId); startActivity(intent); } }); //返回按钮:这里做了最简单的处理,直接把当前Activity给关掉, //程序自动返回到上一个Activity(前提是上一个Activity没有销毁) ImageButton btnBack = (ImageButton) findViewById(R.id.cursor_back); btnBack.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); //隐藏(后退、1/1、前进、刷新)按钮 ImageButton cursor_left = (ImageButton) findViewById(R.id.cursor_left); cursor_left.setVisibility(View.INVISIBLE); ImageButton cursor_right = (ImageButton) findViewById(R.id.cursor_right); cursor_right.setVisibility(View.INVISIBLE); ImageButton cursor_refresh = (ImageButton) findViewById(R.id.cursor_refresh); cursor_refresh.setVisibility(View.INVISIBLE); TextView tv_infoTotal=(TextView)findViewById(R.id.infoTotal); tv_infoTotal.setVisibility(View.INVISIBLE); TextView tv_infoView=(TextView)findViewById(R.id.infoView); tv_infoView.setVisibility(View.INVISIBLE); TextView tv_infoNum=(TextView)findViewById(R.id.infoNum); tv_infoNum.setVisibility(View.INVISIBLE); }
在Activity中创建一个页面可访问的JavaScript接口,供页面调用
private class JavaScriptInterface { private MediaPlayer mediaPlayer; public JavaScriptInterface(){ mediaPlayer = new MediaPlayer(); } /** * 播放 * @param url 播放文件路径 */ public void playMusic(String url){ if(mediaPlayer.isPlaying()){ mediaPlayer.reset(); } try{ mediaPlayer.setDataSource(url); mediaPlayer.prepare(); mediaPlayer.start(); }catch (Exception e) { e.printStackTrace(); } } /** * 暂停 */ public void stopMusic(){ if(mediaPlayer.isPlaying()){ mediaPlayer.stop(); } } /** * GPS显示 * @param gps */ public void showGps(String gps){ Intent i = new Intent(TicketOneActivity.this, MapActivity.class); i.putExtra("gps", gps); startActivity(i); } /** * 提示信息 * @param msg */ public void showMsg(String msg){ if(CommonUtils.validateStr(msg)){ Toast.makeText(TicketOneActivity.this, msg, Toast.LENGTH_SHORT).show(); } if(CommonUtils.matchString(msg, "提交成功")){ finish(); } } }
上面的showMsg方法在页面被调用
//页面调用Activity中的JavaScriptInterface方法 function Msg(msg){ if (window.android){ window.android.showMsg(msg); }else{ alert(msg); } }
----------------------------------------------
在Activity中,也可以将处理的结果返回给页面。以下是一个在任务监听中将结果返回给页面JS的例子。
/** * 签名任务监听 * * @author lihua */ private TaskListener signTicketTaskListener = new TaskAdapter() { @Override public void onPostExecute(GenericTask task, String result) { //处理完成删除本地文件 FileHelper.delFiles(REC_DIR); JSONObject signInfo = (JSONObject) getApi().getBackResult(result, getApplicationContext()); String data = ""; String signdate = ""; try { data = signInfo.getString("result"); signdate = signInfo.getString("signdate"); } catch (JSONException e) { e.printStackTrace(); } String [] signArray = CommonUtils.splitByTag(data, "$"); String words = "",sign ="",gps="",voice="",gid = "",gdt=""; //add edit if(signArray!=null&&signArray.length>0) for (String s : signArray) { if(s!=null&&s.startsWith(Constants.START_TAG_WORD)) words = s.replace(Constants.START_TAG_WORD, ""); if(s!=null&&s.startsWith(Constants.START_TAG_SIGN)) sign = s.replace(Constants.START_TAG_SIGN, ""); if(s!=null&&s.startsWith(Constants.START_TAG_GPS)) gps = s.replace(Constants.START_TAG_GPS, ""); } String cbstr =""; //页面显示设置,调用页面名称为cbTicketSign的js函数 cbstr= "javascript:cbTicketSign('"+ words+"','"+ Constants.SERVER_FILE_CONTENT_TICKET + sign+"','"+ gps+"','"+ signdate+"'"+ ")"; System.out.println("cbstr:"+cbstr); wvTicketOne.loadUrl(cbstr); //关闭提示对话框 mDialog.dismiss(); } @Override public String getName() { return "Login"; } };
页面JS针对Activity的回调函数和JS的普通函数没有多大区别,以下是上面Activity中调用的JS函数。
//工作票签名回调 function cbTicketSign(sAttr, words, sign, gps ,voice , date){ if(sAttr=="workGroupSign"){ $('#workGroupSignLbl').html(words); $('#workGroupSignLbl').hide(); $('#workGroupSignImg').show(); $("#workGroupSignImg").attr("src","${root }"+sign); $("#workGroupSignGps").attr("src","${root}/images/ticket/gps.png"); $("#workGroupSignGps").bind("click",function(){ showGps(gps); }); } }
发表评论
-
Android 远程服务(remote service)
2012-05-29 18:08 9536Android 远程服务 Android远程服务(Remot ... -
百度地图 Android SDK 技术详解集锦
2012-05-21 15:46 2333【百度地图-android SDK】技术详解集锦 百 ... -
Android 避免重复提交
2012-05-11 13:19 7579不曾想,android系统也会有重复提交的问题。网上搜了下,基 ... -
Android 手写签名实例
2012-05-05 15:50 23537这篇文章本来想在一个月前就发布的,最近一直忙于国家电网手持 ... -
ScrollView 中嵌套ListView
2012-04-26 19:45 2049在ScrollView中嵌套使用ListView,Lis ... -
EditText 文本焦点事件
2012-04-19 12:12 9750焦点改变监听:setOnFocus ... -
ListView自定义adapter处理多事件
2012-04-13 16:31 9043使用过ListView 的开发人员都知道,ListView ... -
自定义类继承ImageView 实现多点图片触碰的拖动和缩放
2012-04-13 10:37 15631最近的一个android 项目中,客户要求在查看拍照上传的图片 ... -
android 嵌入服务端页面一 (抱歉,该篇无法用IE打开)
2012-04-05 23:59 2261<%@ page language="java ... -
android开发 ImageView显示文字
2012-03-25 15:35 20775我们将一张图片显示在屏幕上,首先要创建一个图片显示的对象Ima ... -
android开发 资料下载
2012-03-18 13:33 1774这里汇总了android的一些学习资料,有兴趣的可以下载看看。 ... -
Android开发 准备工作补充
2012-03-10 17:57 1310如果你用的IDE是myeclipse,直接通过插件 ... -
Android开发 准备工作
2012-03-10 17:39 1721Android 开发 前期准备: Eclipse3. ...
相关推荐
1.本文采用的是android调用assest中的本地.html文件,webview展示(加载网络的html效果是一样的,把url替换掉就行) 2.包含本地.html文件加载,点击.html控件,Android端响应 3.包含本地.html文件加载,点击.html...
Android 中通过WebView和HTML实现JS交互 Android(Java)与JavaScript(HTML)交互有四种情况: 1) Android(Java)调用HTML中js代码 2) Android(Java)调用HTML中js代码(带参数) 3) HTML中js调用Android...
本文将深入探讨React Native中的Webview与H5的互调机制,以及如何利用它们来增强应用的功能和用户体验。 首先,React Native的`<WebView>`组件是用于加载网页内容的组件,它能够渲染HTML、CSS以及JavaScript。通过...
然后,你可以通过Unity脚本与Web页面进行通信,例如调用Web页面的JavaScript函数,或者接收来自Web页面的消息。 2. 使用第三方WebView插件:Unity Asset Store上有很多第三方的WebView插件,如UnityWebView、Easy ...
WebView是Android SDK中的一个组件,用于加载和显示网页内容,而ViewPager则是一个可以左右滑动切换多个页面的视图容器。 首先,我们需要了解ViewPager的基本用法。ViewPager是一个自定义View,它允许用户通过横向...
Android-X5WebView基本封装和使用 通过OkHttp拦截器、自定义CookieJar有效完成客户端与H5端的Cookie同步管理 监听WebView的加载进度 滚动条的设置(隐藏或者显示,内侧显示还是外侧显示) 优化X5WebView的预加载问题...
通过WebView,我们可以展示HTML、CSS和JavaScript等Web技术构建的页面,同时也可以与原生应用进行交互。本文将深入探讨如何监听WebView中的页面显示事件,以便在特定时刻执行相应的操作。 首先,我们需要了解...
首先,Android提供了WebView组件,它是实现Android与JS互调的基础。WebView是一个可以加载和显示网页的视图,它可以嵌入到Android应用中,让用户在不离开应用的情况下浏览网页内容。通过WebView,我们可以加载本地或...
通过WebView,开发者可以将Web技术与原生Android应用结合,实现更丰富的交互体验。 为了调用摄像头并扫描二维码,我们需要在H5页面中使用相关的JavaScript库,例如`html5-qrcode`。这个库提供了一种简单的方法来...
以上就是如何在Android的WebView中获取当前页面和上一页面URL的基本实现。在实际项目中,可能还需要考虑其他因素,如页面加载进度、错误处理、隐私策略等,以确保用户体验和应用性能。希望这个例子能对你在使用...
在Android开发中,`WebView` 是一个非常重要的组件,它允许开发者在应用程序内嵌入一个浏览器,从而展示HTML、CSS和JavaScript等Web内容。本文将详细介绍如何在Android中使用`WebView`来获取网页的源码,并封装成一...
本文档将详细讲解如何在Android的WebView中监听URL的变化以及如何监听页面加载的完成情况。 首先,要监听WebView中URL的变化,可以通过设置自定义的WebViewClient,并重写onLoadResource方法。当WebView开始加载新...
二、JavaScript与WebView的交互方式 1. **JavaScript到原生的通信:** - `WebView注入JavaScript接口`:在Android中,我们可以使用`addJavascriptInterface()`方法将Java对象暴露给JavaScript,使得JavaScript可以...
本实例将详述如何使用Android Studio 3.1.2版本,通过WebView来创建一个简单的登录界面,该界面使用本地HTML页面进行设计。下面我们将逐步探讨实现这个功能的关键步骤和涉及的技术点。 1. **创建新项目** 首先,...
通过WebView,我们可以将JavaScript代码嵌入到Android应用中,同时利用WebView提供的API实现Android与JavaScript之间的通信。 1. **JavaScriptInterface**: Android通过`addJavascriptInterface()`方法暴露Java...
在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中内嵌网页内容,实现与网页的交互。这个“Android高级应用源码-自定义WebView,自带加载动画”压缩包提供了一个实例,展示了如何在WebView的...
在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中加载和显示网页内容。有时候,我们可能希望去除WebView中的标题部分,以实现更自定义化的界面设计。本篇文章将详细探讨如何在Android的...
在Android平台上,Webview是一个非常重要的组件,它允许开发者在原生应用中嵌入网页内容。这个项目"Android Webview视频播放器"是利用Webview来实现HTML5视频播放功能的示例。以下是对这个项目的详细解读: 1. **...
这个源码示例展示了如何在WebView中调用H5页面,并利用Android原生的摄像头功能来扫描二维码,实现二维码识别。下面我们将详细探讨这个过程中涉及的关键知识点。 1. **WebView组件**:WebView是Android SDK提供的一...
在“Android WebView H5调用拍照”这个主题中,我们将深入探讨如何通过WebView组件和H5页面实现用户调用手机摄像头拍照的功能。 首先,我们需要理解WebView的基本使用。在AndroidManifest.xml文件中,为应用添加...