如何从 Android 应用程序中的 logcat 捕获错误?
How to catch an error from the logcat inside Android App?
我在某些 phone 上遇到下一个错误,这些 phone 没有更新的 webview 引擎,或者有 cordova webview 不支持的奇怪浏览器。
07-27 13:50:47.233 14356-14356/com.locknot I/chromium: [INFO:CONSOLE(1)] "Uncaught TypeError: Object.assign is not a function", source: file:///android_asset/www/vendor.6356da77cc5903aae591.bundle.js (1)
我想捕获这个错误,以便向用户显示一个对话框,说明他的 phone 不兼容。
我该怎么做?对不起我的英语。
您可以扩展 WebChromeClient class 并覆盖其 onConsoleMessage() 方法。此方法从它显示的网站中接收所有控制台消息。最后,通过 setWebChromeClient() 方法将这个 WebChromeClient 的实例设置到 WebView 中。所以 Kotlin 代码看起来像这样:
webView.webChromeClient = object : WebChromeClient() {
override fun onConsoleMessage(consoleMessage: ConsoleMessage?): Boolean {
if (consoleMessage != null && consoleMessage.message().contains("Uncaught TypeError", false)) {
// show user a dialog
}
return super.onConsoleMessage(consoleMessage)
}
}
我在某些 phone 上遇到下一个错误,这些 phone 没有更新的 webview 引擎,或者有 cordova webview 不支持的奇怪浏览器。
07-27 13:50:47.233 14356-14356/com.locknot I/chromium: [INFO:CONSOLE(1)] "Uncaught TypeError: Object.assign is not a function", source: file:///android_asset/www/vendor.6356da77cc5903aae591.bundle.js (1)
我想捕获这个错误,以便向用户显示一个对话框,说明他的 phone 不兼容。
我该怎么做?对不起我的英语。
您可以扩展 WebChromeClient class 并覆盖其 onConsoleMessage() 方法。此方法从它显示的网站中接收所有控制台消息。最后,通过 setWebChromeClient() 方法将这个 WebChromeClient 的实例设置到 WebView 中。所以 Kotlin 代码看起来像这样:
webView.webChromeClient = object : WebChromeClient() {
override fun onConsoleMessage(consoleMessage: ConsoleMessage?): Boolean {
if (consoleMessage != null && consoleMessage.message().contains("Uncaught TypeError", false)) {
// show user a dialog
}
return super.onConsoleMessage(consoleMessage)
}
}