android:如何在java代码中覆盖webview中的javascript事件

Title:如何通过点击android的webView中的一个元素打开native的界面(activity)

如何在webView中直接打开native的界面

设置webview支持javascript

[java] view
plain
copy

  1. webview.getSettings().setJavaScriptEnabled(true);  

添加提供给javascript调用的类对象和接口名字

[java] view
plain
copy

  1. webview.addJavascriptInterface(new JavascriptInterface(MyActivity.this), "mynamespace");  

供javascript调用的类的代码

[java] view
plain
copy

  1. public class JavascriptInterface {  
  2.   
  3.     private Activity activity;  
  4.       
  5.     public JavascriptInterface(Activity activity){  
  6.         this.activity = activity;  
  7.     }  
  8.     public void toMyPage(){  
  9.         Intent intent = new Intent();  
  10.         intent.setClass(activity, AnotherActivity.class);  
  11.         activity.startActivity(intent);  
  12.     }  
  13. }  

为webview添加WebViewClient

[java] view
plain
copy

  1. webview.setWebViewClient(new MyWebViewClient(this, browser));  

在MyWebViewClient的onPageFinished方法中注入javascript代码

[java] view
plain
copy

  1. public class MyWebViewClient extends WebViewClient {  
  2.       
  3.     private Context con;  
  4.       
  5.     public PTCWebViewClient(Context con, final WebView web){  
  6.         this.con = con;  
  7.     }  
  8.   
  9.     @Override  
  10.     public boolean shouldOverrideUrlLoading(WebView view, String url) {  
  11.         view.loadUrl(url);  
  12.         return true;  
  13.     }  
  14.     @Override  
  15.     public void onPageStarted(WebView view, String url, Bitmap favicon) {  
  16.         super.onPageStarted(view, url, favicon);  
  17.     }  
  18.     @Override  
  19.     public void onPageFinished(WebView view, String url) {  
  20.         super.onPageFinished(view, url);  
  21.         view.loadUrl("javascript:(function(){document.getElementById('snapNSendBtn').onclick=function(){window.ltamtc.toSnapNSend();}})()");  
  22.     }  
  23. }  

如此一来,每当这个webView加载完一个页面,而且这个页面有ID为“mySourceButton”的元素,那这个元素的点击事件就被修改为用户自定义的暴露给javascript调用的toMyPage()事件。一旦点击,界面就跳转,或者做任何你想做的事情

时间: 2024-09-13 07:46:06

android:如何在java代码中覆盖webview中的javascript事件的相关文章

android 如何在java代码中方便的调用xml写的布局??

问题描述 android 如何在java代码中方便的调用xml写的布局?? 我想在activity刷新的时候重新生成一些xml写的布局,并放在 "求学"那一栏下: 想问一下有没有什么方便的方法??? 解决方案 可控的话 先加载求学哪里 先设visible为gone. 需要的时候设置为visible 解决方案二: 楼上说得对,先把控件实例化然后把visiblity设为gone 然后调用刷新按钮的时候吧实例传过去,再重新设置visiblity 解决方案三: 一种是隐藏然后显示,最好是用动态

javascript-js中的java代码如何访问js中方法的参数??见图

问题描述 js中的java代码如何访问js中方法的参数??见图 如何让1处的值传到2处这里?? 解决方案 需要用ajax提交你的index到服务器,服务器端无法直接获取客户端js的变量值 <script src=""http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.4.1.min.js""></script><script type=""text/javascript&qu

xml解析-java代码怎么读取xml中的各个属性值对应的内容

问题描述 java代码怎么读取xml中的各个属性值对应的内容 java代码怎么读取xml中的各个属性值对应的内容.比如得到连接Sql Server数据库的localhost sqlname username password

Android中在WebView里实现Javascript调用Java类的方法_Android

为了方便网页和Android应用的交互,Android系统提供了WebView中JavaScript网页脚本调用Java类方法的机制.只要调用addJavascriptInterface方法即可映射一个Java对象到JavaScript对象上. 1.映射Java对象到JavaScript对象上 复制代码 代码如下: mWebView = (WebView) findViewById(R.id.wv_content); mWebView.setVerticalScrollbarOverlay(tr

如何在Java程序和.net程序中连接Informix HDR服务器

Informix 提供了多种高可用性集群技术,其中 HDR 技术是一种方便.高效.应用广泛的容灾恢复技术,已经广泛应用于电信.银行.保险等行业.在数据库端,Informix 采用了许多内部机制以保证数据的高可用性,而在应用客户端建立与 HDR 的连接从而利用 HDR 的这一特性也是非常重要的.本文介绍在 Java 程序和 .net 程序中连接 HDR 服务器的方法,包括使用 CM 和不使用 CM 的情况. HDR 简介 HDR(High available Data Replication) 是

怎样用Java代码抓取网页中的iframe中的数据

问题描述 最近老大让我做一个深度搜索功能,但是不知道怎样获取网页中iframe中的数据,求大神指教! 解决方案 解决方案二:看看吧解决方案三:iframe里面也是src的地址啊.解决方案四:有了src不就有地址了?继续下载啊,一个递归处理就行

怎么用java代码爬取网页中视频的源地址,不要用嗅探工具!!求高手帮助啊 !!!

问题描述 现在在做一个多媒体管理系统,需要像百度一样抓取一些网站的视频的真实连接,但是想优酷.土豆或者各大视频网站的视频的链接都是经过js加密的,求高手怎么才能获得视频的真实地址啊!!不要用字符串拼接,那个只要算法一变就不行了!!!求各位高手指导指导!!! 解决方案 解决方案二:网络抓包,分析底层协议?解决方案三:eval 解决方案四:解决没有大神,如果解决了,给个实例,邮箱:2087224217@qq.com.谢谢了解决方案五:楼主你好请问这个问题后来是怎么解决的,我最近在做着一个音乐播放器,

Android编程使用WebView实现与Javascript交互的方法【相互调用参数、传值】

本文实例讲述了Android编程使用WebView实现与Javascript交互的方法.分享给大家供大家参考,具体如下: Android中可以使用WebView加载网页,同时Android端的Java代码可以与网页上的JavaScript代码之间相互调用. 效果图: (一)Android部分: 布局代码: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&qu

Android WebView上实现JavaScript与Java交互_Android

其实webview加载资源的速度并不慢,但是如果资源多了,当然就很慢.图片.css .js .html这些资源每个大概需要10-200ms ,一般都是30ms就ok了.不过webview是必须等到全部资源都完成加载,才会进行渲染的,所以加载的速度很重要!从Google上我们了解到,webview加载页面的顺序是:先加载html,然后从里面解析出css.js文件和页面上的图片资源进行加载.如果webkit的缓存里面有,就不加载.加载完这些资源之后,就进行css的渲染和js的执行.Css的渲染一般不