`
betakoli
  • 浏览: 169051 次
社区版块
存档分类
最新评论

android webview调用js完全解析(所有坑都能解决)

 
阅读更多
有道云笔记贴过来的代码有点乱,请参考原文
webview调用html js完全攻略(所有的疑问都能解答)
设置webSettings
//允许h5使用javascript
webView.getSettings().setJavaScriptEnabled(true);
//允许android调用javascript
webView.getSettings().setDomStorageEnabled(true);
 
设置调用javascript
webView.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url) {
webView.loadUrl("javascript:alert('hello')");
webView.loadUrl("javascript:androidCallBack()");
}
}
一定要放在onPageFinished中,保证webview已经加载完毕,再调用js。
上面通过android调用js的弹窗功能。这也是我们常用的js测试功能。
 
现在可以说配置完成了,当我们运行上面代码,发现并没有alert数据(或者console数据),这也是困扰我比较长时间的地方。
最后发现,android要获取javascript的弹窗功能(或console)功能,有单独的方法调用。
 
捕获弹窗(或console)
webView.setWebChromeClient(new WebChromeClient(){
@Override
public boolean onConsoleMessage(ConsoleMessage cm) {
Log.d("test", cm.message() + " -- From line " + cm.lineNumber() + " of " + cm.sourceId() );
return true;
}
 
@Override
public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
Log.d("alert",message);
return true;
}
});
加上配置后继续运行。这时发现弹窗的数据的确打印了,不过H5的界面却没显示出来,经过查阅,了解到,webview捕获alert函数后会卡死,需要释放。
修改代码如下:
@Override
public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
Log.d("alert",message);
//劫持alert以后释放,不然会卡死
result.confirm();
return true;
}
再次运行,显示成功。
 
补充说明下,当时使用fragement加载,需要在切换fragement的时候webview调用js。而fragementmanager的show和hide方法,并不会调用fragement的生命周期函数,经过查阅文档,发现会调用,onHiddenChanged方法,于是问题得到解决。
 
public void onHiddenChanged(boolean hidden) {
super.onHiddenChanged(hidden);
if (hidden) {// 不在最前端界面显示
 
} else {// 重新显示到最前端中
webView.evaluateJavascript("javascript:androidCallBack()",null);
}

<audio controls="controls" style="display: none;"></audio>

<audio controls="controls" style="display: none;"></audio>

分享到:
评论

相关推荐

    Android webview调用摄像头扫描二维码

    以上就是关于“Android Webview调用摄像头扫描二维码”的详细实现步骤和相关知识点。这个过程展示了如何在Android应用中融合Webview和原生功能,以实现更丰富的交互体验。通过学习和实践,开发者可以更好地掌握混合...

    Android使用WebView调用H5完成摄像头扫描二维码

    以上就是利用WebView调用H5页面完成摄像头扫描二维码的基本流程。这个功能使得开发者能够轻松地在Android应用中实现二维码扫描,而无需依赖第三方库或者原生开发。同时,由于H5页面的灵活性,更新和维护也变得更加...

    Android APP使用WebView调用H5页面完成摄像头扫描二维码软件源码.rar

    在Android应用开发中,WebView是一个非常重要的组件,...以上就是Android APP使用WebView调用H5页面完成摄像头扫描二维码的关键技术点。通过这个示例,开发者可以学习到如何结合原生功能与H5页面,提升APP的用户体验。

    android不使用webview与js交互

    Android应用可以调用服务器上的API,这些API由Node.js或其他后端服务提供,执行JavaScript代码并返回结果。这种方式增加了网络延迟,但避免了在客户端解析JavaScript的开销。 4. **本地服务与WebSocket** 创建一个...

    android demo,webview_js(webview的js方法调用java方法)。

    在Android开发中,Webview是一个非常重要的组件,它允许我们加载和显示网页内容,同时还能与JavaScript进行交互。本示例“android demo,webview_js”着重展示了如何通过Webview实现JavaScript调用Java方法的功能。...

    Android中 webView调用JS出错的解决办法

     webView调用JS出错。 代码如下:  class TestJS {  ……  public TestJS(){  }    public void save(String data){   webView.loadUrl(“[removed] alert&#40;” + data +”&#41;”);  }  ……  } ...

    android 使用webview、js生成图表

    在Android开发中,Webview是一个非常重要的组件,它允许我们加载和显示网页内容,甚至执行JavaScript代码。在本文中,我们将深入探讨如何在Android应用中使用Webview与JavaScript结合生成图表,这通常用于数据可视化...

    webview 修改字体颜色大小背景 js实现

    通过内建的浏览器引擎,Webview可以解析并执行JavaScript代码,使得与网页内容的交互成为可能。 二、JavaScript与Webview的交互 Webview与JavaScript的交互主要通过两个方法实现:`evaluateJavaScript`(Android)...

    JS调用Android方法,向Android方法传递json数据

    为了安全起见,从Android 4.2(API级别17)开始,所有通过`addJavascriptInterface()`暴露的方法都默认应用了`@JavascriptInterface`注解,以防止潜在的跨域注入攻击。 例如,我们可以在Android的Activity或...

    android WebView结合javascript相互调用

    本篇文章将深入探讨如何在Android的WebView中结合JavaScript进行相互调用,以及相关的源码解析。 首先,我们需要在Android代码中创建一个WebView实例,并设置一些基本属性,如加载网页的URL。这可以通过以下代码...

    android和js相互调用

    在Android和JavaScript交互的过程中,开发者经常需要在两者之间进行数据传递和方法调用,以便实现更复杂的混合式应用开发。这种技术通常应用于Webview环境,其中Android原生代码与嵌入的网页内容进行互动。本篇文章...

    Android webview 上传图片

    在Android开发中,WebView是一个非常重要的组件,它允许我们在原生应用中内嵌网页内容,实现混合式开发。本文将详细讲解如何在Android的WebView中实现图片上传功能,并与HTML5 JavaScript进行交互。 1. **WebView...

    Android WebView js与Java调用实例

    在Android应用开发中,WebView是一个非常重要的组件,它允许开发者在应用程序中嵌入网页内容,同时还能实现JavaScript与原生Java代码的交互。这个实例将会深入解析如何在Android的WebView中实现JavaScript与Java的...

    Android通过JS在线用webview加载PDF文件(无限放大版本)

    在Android开发中,有时我们需要在应用内部展示PDF文件,而Webview是一个常用的选择。Webview不仅可以加载HTML页面,还可以通过JavaScript接口与Android原生代码交互,实现更多功能。本教程将详细讲解如何在Android的...

    android4.4 WebView与js交互

    这篇文档将详细探讨如何在Android 4.4的WebView中实现Java调用JavaScript以及JavaScript调用Java。 ### Java调用JavaScript 1. **`loadUrl()`方法**:这是最基础的调用方式,通过加载一个JavaScript字符串到...

    android webview jbox2d 源代码 项目源码

    1. JavaScript与Java的交互:使用WebView的addJavascriptInterface方法,可以将Java对象暴露给JavaScript,从而在JavaScript代码中调用Android原生的方法,如控制JBox2D的物理世界。 2. JSON数据交换:为了安全性和...

    android使用webview上传文件兼容问题解决支持5.0以上系统

    通过自定义File Chooser、处理运行时权限以及建立JavaScript交互,我们可以确保在各种Android版本中都能正常上传文件。在实际开发中,可能还需要考虑其他因素,如文件大小限制、安全性和性能优化等,这些都需要根据...

    Android WebView详解和调用JS,androidrom开发书籍(csdn)————程序.pdf

    这篇文档主要探讨了如何详细地使用Android WebView以及如何调用JavaScript,这对于Android ROM开发至关重要。以下是对这些知识点的深入解析: 1. **WebView的使用**: - 首先,你需要在布局XML文件中添加一个...

    Android 不用webview 执行js代码 rhino-1.7.7.2.jar

    Android 中不在用webview的情况下 执行js代码并得到返回值

    Android webview长按识别二维码

    Webview是Android SDK提供的一种用于在应用内部显示网页的控件,它可以处理JavaScript、CSS等网页元素,甚至可以与原生代码交互。而二维码识别则是通过扫描二维码图像,解析其中包含的信息,如网址、文本、联系人...

Global site tag (gtag.js) - Google Analytics