- 浏览: 660312 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (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 9416Android 远程服务 Android远程服务(Remot ... -
百度地图 Android SDK 技术详解集锦
2012-05-21 15:46 2205【百度地图-android SDK】技术详解集锦 百 ... -
Android 避免重复提交
2012-05-11 13:19 7486不曾想,android系统也会有重复提交的问题。网上搜了下,基 ... -
Android 手写签名实例
2012-05-05 15:50 23438这篇文章本来想在一个月前就发布的,最近一直忙于国家电网手持 ... -
ScrollView 中嵌套ListView
2012-04-26 19:45 1964在ScrollView中嵌套使用ListView,Lis ... -
EditText 文本焦点事件
2012-04-19 12:12 9642焦点改变监听:setOnFocus ... -
ListView自定义adapter处理多事件
2012-04-13 16:31 8941使用过ListView 的开发人员都知道,ListView ... -
自定义类继承ImageView 实现多点图片触碰的拖动和缩放
2012-04-13 10:37 15536最近的一个android 项目中,客户要求在查看拍照上传的图片 ... -
android 嵌入服务端页面一 (抱歉,该篇无法用IE打开)
2012-04-05 23:59 2178<%@ page language="java ... -
android开发 ImageView显示文字
2012-03-25 15:35 20672我们将一张图片显示在屏幕上,首先要创建一个图片显示的对象Ima ... -
android开发 资料下载
2012-03-18 13:33 1687这里汇总了android的一些学习资料,有兴趣的可以下载看看。 ... -
Android开发 准备工作补充
2012-03-10 17:57 1193如果你用的IDE是myeclipse,直接通过插件 ... -
Android开发 准备工作
2012-03-10 17:39 1628Android 开发 前期准备: 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...
reactNative之Webview与h5互调,讲解在https://blog.csdn.net/yeputi1015/article/details/70187748
android滑动切换页面——(webview + viewpager)的演示
Android-X5WebView基本封装和使用 通过OkHttp拦截器、自定义CookieJar有效完成客户端与H5端的Cookie同步管理 监听WebView的加载进度 滚动条的设置(隐藏或者显示,内侧显示还是外侧显示) 优化X5WebView的预加载问题...
在u3d引擎中,嵌入web界面,利用web的前端技术,完成数据的渲染和交互
webview和js互调
Android WebView 去除标题 利用javacript交互
Android APP使用WebView调用H5页面完成摄像头扫描二维码 项目使用Android Studio,打开项目可以直接运行,用过的都说好:)
Android使用WebView获取网页的源码,将WebView封装进ArthurWebView,直接创建并初始化即可使用!
webview 监听页面显示事件,很好用
有时候,我们完全可以把UI甚至数据处理都交给WebView,配合PHP等服务端程序,这样Android开发就变成了网页开发,可以省很多精力。 下面是一个WebView的简单例子,如果用把所有功能都交给服务端脚本处理,这个程序...
主要介绍了Android中的webview监听每次URL变化实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
使用android studio 3.1.2 ,利用webview,实现登录界面。采用本地html 页面
Android 通过 WebView 与 js 交互实现图文混排, 解决图片适配屏幕问题与查看大图功能
使用WebView可以让Android端的开发工作大量减少,原因是在服务端可以为其做一定的工作,下面这个小Demo就实现了从Android客户端与服务端的交互。我这里客户端使用的工具是Eclipse,服务端使用MyEclipse。
Android webview 内存泄露的解决方法 最近在activity嵌套webview显示大量图文发现APP内存一直在涨,没法释放内存,查了很多资料,大概是webview的一个BUG,引用了activity导致内存泄漏,所以就尝试传递...
android开发中WebView的使用 WebView是个好东西,作用相当于一个迷你的浏览器,采用Webkit内核,因此完美支持html,javascript,css等。有时候,我们完全可以把UI甚至数据处理都交给WebView,配合PHP等服务端程序,...
Android Webview 滑动监听 放大缩小查看网页图片
android webview js交互, 响应webview中的图片点击事件 ,点击(双击)使图片变大,单击退出