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()事件。一旦点击,界面就跳转,或者做任何你想做的事情
相关文章
|
11天前
|
JSON JavaScript 前端开发
JavaScript原生代码处理JSON的一些高频次方法合集
JavaScript原生代码处理JSON的一些高频次方法合集
|
16天前
|
移动开发 Java Android开发
构建高效Android应用:探究Kotlin与Java的性能差异
【4月更文挑战第3天】在移动开发领域,性能优化一直是开发者关注的焦点。随着Kotlin的兴起,其在Android开发中的地位逐渐上升,但关于其与Java在性能方面的对比,尚无明确共识。本文通过深入分析并结合实际测试数据,探讨了Kotlin与Java在Android平台上的性能表现,揭示了在不同场景下两者的差异及其对应用性能的潜在影响,为开发者在选择编程语言时提供参考依据。
|
29天前
|
Java 编译器 Android开发
构建高效Android应用:探究Kotlin与Java的性能差异
【2月更文挑战第30天】 随着Kotlin成为开发Android应用的首选语言,开发者社区对于其性能表现持续关注。本文通过深入分析与基准测试,探讨Kotlin与Java在Android平台上的性能差异,揭示两种语言在编译效率、运行时性能和内存消耗方面的具体表现,并提供优化建议。我们的目标是为Android开发者提供科学依据,帮助他们在项目实践中做出明智的编程语言选择。
|
1月前
|
存储 JavaScript 前端开发
非常实用的JavaScript一行代码(整理总结)
非常实用的JavaScript一行代码(整理总结)
27 0
|
23天前
|
Java 编译器 Android开发
构建高效Android应用:探究Kotlin与Java的性能差异
在开发高性能的Android应用时,选择合适的编程语言至关重要。近年来,Kotlin因其简洁性和功能性受到开发者的青睐,但其性能是否与传统的Java相比有所不足?本文通过对比分析Kotlin与Java在Android平台上的运行效率,揭示二者在编译速度、运行时性能及资源消耗方面的具体差异,并探讨在实际项目中如何做出最佳选择。
17 4
|
26天前
|
JSON 前端开发 JavaScript
16个重要的JavaScript代码
16个重要的JavaScript代码
30 1
|
28天前
|
JavaScript
当当网新用户注册界面——JS代码
当当网新用户注册界面——JS代码
7 0
|
28天前
|
JavaScript
当当网首页——JS代码
当当网首页——JS代码
10 1
|
29天前
|
JavaScript Java
什么?java中居然可以执行js代码了?真是不知者不怪
什么?java中居然可以执行js代码了?真是不知者不怪
13 1
|
29天前
|
JavaScript 前端开发 Python
生成X-Bogus的js代码,通过python调用生成
该文本是一个关于如何解析和执行JavaScript代码的步骤说明。主要内容包括: 1. 找到JavaScript文件的位置。 2. 下载代码并进行格式化。 3. 运行代码时会出现缺少变量错误,需要添加模拟环境的代码。 4. 指出主要的入口函数是`_0x5a8f25`,将其赋值给`window`。 5. 提供了整个JavaScript代码的长串内容。 6. 提供了一个Python脚本,用于调用这个JavaScript函数并处理返回的数据。 总结:这段文本描述了如何处理和运行一个JavaScript文件,以及使用Python来与这个脚本交互的示例。