gpt4 book ai didi

android - 设置 Thread.setDefaultUncaughtExceptionHandler 会阻止 Google 的错误报告工作吗?

转载 作者:太空狗 更新时间:2023-10-29 14:26:01 25 4
gpt4 key购买 nike

在我的 Android 应用程序中,我使用 setDefaultUncaughtExceptionHandler 在用户设备上本地存储有关未处理异常的信息。在一些反馈之后,我怀疑这段代码阻止了内置的谷歌错误报告功能的工作,因为我在开发者控制台中看不到错误报告,而异常是由用户报告的。他们的设备远远超过 2.2,引入了错误报告。可能是特定设备,比如 4.0.3 不支持此功能?如果是,我如何以编程方式检测到这一点?

我在 Android 文档中找不到与此相关的信息。我希望标准错误报告和我的自定义处理一起工作。在我的自定义异常处理程序中,我调用 Thread.getDefaultUncaughtExceptionHandler() 来获取默认处理程序,在我的 uncaughtException 实现中,我也将异常传播到这个默认处理程序。

最佳答案

我首先尝试调用 System.exit(1);,如 this SO answer 中所述,但这没有用。

最终通过在 Android 的默认 UncaughtExceptionHandler 上再次调用 uncaughtException(Thread thread, Throwable ex) 解决了这个问题(通过检查 ACRA source code 找到它。

示例 Activity

public class MainActivity extends Activity implements Thread.UncaughtExceptionHandler {
private Thread.UncaughtExceptionHandler _androidUncaughtExceptionHandler;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
_androidUncaughtExceptionHandler = Thread.getDefaultUncaughtExceptionHandler();
Thread.setDefaultUncaughtExceptionHandler(this);

// Rest onCreate
setContentView(R.layout.main_activity);
}

//@Override
public void uncaughtException(Thread thread, Throwable ex) {
try {
// Do your stuff with the exception
} catch (Exception e) {
/* Ignore */
} finally {
// Let Android show the default error dialog
_androidUncaughtExceptionHandler.uncaughtException(thread, ex);
}
}
}

关于android - 设置 Thread.setDefaultUncaughtExceptionHandler 会阻止 Google 的错误报告工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12536520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com