详解Android WebView监听console错误信息

根据需求,我们要拿到h5的错误信息,并将error信息进行上报。查询了下Android WebView的API发现了WebChromeClient这个方法可以满足要求:

@Override
 public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
  //获取log的级别
  switch (consoleMessage.messageLevel()){
     case ERROR://将error信息上报到服务端
      LogUtil.logE("webview==",consoleMessage.message()+" level="+ consoleMessage.messageLevel());
       LogUtil.uploadH5Error(consoleMessage.message());
       break;
   }
  return super.onConsoleMessage(consoleMessage);
}

这个方法的作用就是* Report a JavaScript console message to the host application.,就是说这个方法可以拦截JavaScript的console信息,就跟在浏览器里查看一样;对于Android来说,在Android studio 的logcat里面就就可以查看,比如我让h5随便弄个undefined错误,然后重写了js的log方法logcat输出如下:

从输出信息我们可以看到可以捕获到行号,错误信息,错误的URL。这些信息都在ConsoleMessage对象里。 其代码如下:

可以看出ConsoleMessage里面也有log级别,我们只需要将error级别的日志上报即可。

到此这篇关于Android WebView监听console错误信息的文章就介绍到这了,更多相关Android WebView console错误信息内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Android webview 遇到android.os.FileUriExposedException错误解决办法

    Android webview 遇到android.os.FileUriExposedException错误解决办法 1. 在 Manifest 文件中添加: <manifest ...> <application ...> <provider android:name="android.support.v4.content.FileProvider" android:authorities="${applicationId}.provider&

  • Android获取WebView加载url的请求错误码 【推荐】

    例如需求,我有一个WebView 加载一个url, 该url对应的网页本身自带下拉刷新 ,但是网页本身会有出现400 500 等异常请求错误码 这时候网页加载失败,页面本身的下拉是无法使用的,要求重新加载页面的话就需要在webview外层套一个android下拉控件(SwipeRefreshLayout) 这样导致下拉一定用的SwipeRefreshLayout的下拉 最终要求是如果页面加载成功的话,用页面本身的下拉,如果页面加载失败的话,用android下拉控件的下拉 ------------

  • Android webview加载https链接错误或无响应的解决

    最近做无线WiFi的时候,在最后认证成功的时候会弹出一个广告页,于是用webview去加载了一下,结果没反应,打印url出来看了一下,发现是https格式的,在使用WebView加载https资源文件时,如果认证证书不被Android认可,那么会出现无法成功加载对应资源问题.那么,我们就要针对这一状况作出对应的处理. 于是百度了一下,这里记录一下,给大家做个参考: 1.设置WebView接受所有网站的证书 在认证证书不被Android所接受的情况下,我们可以通过设置重写WebViewClient

  • 详解Android WebView监听console错误信息

    根据需求,我们要拿到h5的错误信息,并将error信息进行上报.查询了下Android WebView的API发现了WebChromeClient这个方法可以满足要求: @Override public boolean onConsoleMessage(ConsoleMessage consoleMessage) { //获取log的级别 switch (consoleMessage.messageLevel()){ case ERROR://将error信息上报到服务端 LogUtil.log

  • 详解React Native监听Android回退按键与程序化退出应用

    详解React Native监听Android回退按键与程序化退出应用 前言 我们知道Android回退按键,会控制页面返回, 并且退出应用并非真正意义退出,仍在后台运行,所以在某些场景下需要监控android回退按键,那么在React Native中应该如何应用呢?我们具体来看看. BackAndroid 此模块用于监听硬件的back键操作. 看下具体代码: BackAndroid.addEventListener('hardwareBackPress', function() { if (!

  • 详解JavaScript实现监听路由变化

    目录 history pushState()方法 pushState()使用场景 replaceState() 方法 popstate事件 pushState和replaceState如何监听呢? 获取当前状态 对比 总结 前端实现路由变化主要有两种方式,这两种方式最大特点就是实现URL切换无刷新功能 通过hash改变,利用window.onhashchange 监听. 通过history的改变,进行js操作加载页面,然而history并不像hash那样简单,因为history的改变,除了浏览器

  • 详解Android Webview加载网页时发送HTTP头信息

    详解Android Webview加载网页时发送HTTP头信息 当你点击一个超链接进行跳转时,WebView会自动将当前地址作为Referer(引荐)发给服务器,因此很多服务器端程序通过是否包含referer来控制盗链,所以有些时候,直接输入一个网络地址,可能有问题,那么怎么解决盗链控制问题呢,其实在webview加载时加入一个referer就可以了,如何添加呢? 从Android 2.2 (也就是API 8)开始,WebView新增加了一个接口方法,就是为了便于我们加载网页时又想发送其他的HT

  • 实例详解Android Webview拦截ajax请求

    Android Webview虽然提供了页面加载及资源请求的钩子,但是对于h5的ajax请求并没有提供干涉的接口,这意味着我们不能在webview中干涉javascript发起的http请求,而有时候我们确实需要能够截获ajax请求并实现一些功能如:统一的网络请求管理.cookie同步.证书校验.访问控制等. 思路 虽然在 Webview中无法直接拦截 ajax请求(其实在shouldInterceptRequest 中是可以收到ajax请求的,但是遗憾的是取不到请求参数,这样也是没有意义的),

  • 详解Vue 如何监听Array的变化

    回忆 在上一篇Vue响应式原理-理解Observer.Dep.Watcher简单讲解了Observer.Dep.Watcher三者的关系. 在Observer的伪代码中我们模拟了如下代码: class Observer { constructor() { // 响应式绑定数据通过方法 observe(this.data); } } export function observe (data) { const keys = Object.keys(data); for (let i = 0; i

  • 详解Vue的监听属性

    目录 Vue监听属性 什么是监听属性? 监听属性和计算属性的区别? 监听属性的使用 深度监听 立即调用 总结 Vue监听属性 什么是监听属性? 所谓监听就是对内置对象的状态或者属性变化进行监听并且做出反应的响应,监听属性,意思就是可以监视其他数据的变化. 监听属性和计算属性的区别? 计算属性是依赖的值改变后重新计算结果更新DOM,会进行缓存. 属性监听的是属性值,当定义的值发生变化时,执行相对应的函数. 最主要的用途区别: 计算属性不能执行异步任务.计算属性一般不会用来向服务器请求或者执行异步任

  • 详解vue2.0监听属性的使用心得及搭配计算属性的使用

    我们在工作中常常需要监听某一个属性值的变化,这个时候我们就需要用到了监听属性watch,在这里我总结watch属性的三种场景使用希望对你有所帮助: 1.基础版监听: 场景如下:输入框输入你的年龄,如果年龄在0-15岁提示信息:你还是个小孩,如果年龄在 15-25岁,提示信息:你已经是个少年,如果年龄在25岁以上,提示信息:你已经长大了.根据需求配合监听属性我们得到下面的代码: <template> <div id="app"> 年齡:<input type

  • 详解Android WebView的input上传照片的兼容问题

    问题 前几天接到的一个需求,是关于第三方理财产品的H5上传照片问题. 对方说他们的新的需求,需要接入方配合上传资产照片的需求,测试之后发现我们这边的app端,IOS端上传没有问题,而Android端则点击没有任何反应. 对方H5调用的方式是通过<input type='file' accept='image/*'/>的方式调用,本来以为这个问题很简单,就是app端没有设置相机权限,造成的点击无反应情况,而实际上加了之后发现,并非简单的权限问题. 解决问题 因为Android的版本碎片问题,很多

  • 详解android webView独立进程通讯方式

    为什么需要将webView放在独立进程 webView 加载网页的时候可能占用大量内存,导致应用程序OOM. webView 在访问结束的时候可以直接杀死该进程,防止内存泄漏. webView 在崩溃的时候不影响主进程. webView独立进程需要注意什么 由于进程之间内存是独立的,所以导致了Appcation, 静态类需要在新的进程重新创建. 内存中的数据不共享,需要跨进程通讯. 如何声明一个独立进程 在默认情况下,同一应用的所有组件都在相同的进程中运行. 在Manifest中可以设置各组件

随机推荐