如何从 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)
     }
}