如何在应用程序崩溃时添加“发送反馈”选项?

时间:2017-12-04 15:53:59

标签: android google-play crashlytics google-fabric user-feedback

如何在Android应用崩溃时添加“发送反馈”选项?此选项可在Google自己的应用中看到,以下是星巴克的一个示例。

App has stopped dialog with Send Feedback

这个问题有许多非常古老的答案,涉及以编程方式创建这样的东西。他们似乎过分参与了这个节目。

我很惊讶没有一个简单的方法来实现这一点,而不是试图抓住整个应用程序。这可以简单地启用,例如通过在Google Play商店控制台上启用选项或向清单添加内容?

我无法在Android或Play商店文档中找到有关如何执行此操作的数据。

更新:我们正在使用Crashlytics / Fabric作为我们的崩溃报告库

此图显示Android 6.0上的默认行为。

enter image description here

和8.0:

enter image description here

4 个答案:

答案 0 :(得分:1)

Android平台将为您完成此操作。您无需添加任何其他代码。尝试从您的应用中抛出异常。你应该看到这个。

请参阅https://android-developers.googleblog.com/2010/05/google-feedback-for-android.html

将应用程序发布到Playstore后,将显示“发送反馈”选项。我认为您无法看到它,因为您正在测试的应用程序是未直接从Playstore下载的应用程序版本,例如:使用调试密钥库签名的应用程序。

答案 1 :(得分:0)

  

我很惊讶没有一种简单的方法来实现这一点,而不是在整个应用程序中试一试

没有办法“试试整个应用程序”。

crash reporting libraries for Android种类繁多,其中一些(例如ACRA)会支持您的反馈选项。实施崩溃报告器有点棘手,因为当您崩溃时应用程序的进程处于不稳定状态,这就是我们为此目的测试和调试库的原因。

  

这可以简单地启用,例如通过在Google Play商店控制台上启用选项或向清单添加内容?

图书馆会在清单中添加内容,作为将其添加到您的应用中的一部分。

答案 2 :(得分:0)

有很多库可以做到这一点,但是如果你像我一样并且不喜欢通用库的开销来完成这么简单的任务,那么你自己很容易做到

以下是让您前往的几个步骤:

1)添加一个扩展Application的类(如果你还没有)。

2)在其中onCreate使用Thread.setDefaultUncaughtExceptionHandler设置自定义UncoughtExceptionHandler。

3)在自定义处理程序中,使用带有Intent.FLAG_ACTIVITY_NEW_TASK标志的intent启动活动。对于此活动,在清单中添加android:process=":crash"属性(crash可以是您想要的任何内容)。此步骤将确保新活动将在不同的进程上启动(这很重要,因为旧的活动已崩溃,现在处于堆栈回滚过程中,因为异常)。

4)在这项活动中,做任何你需要的事情。 (提供崩溃报告所需的UI,和/或向自己发送电子邮件)。 JavaMail适用于静音电子邮件。

注意:在UncaughtExceptionHandler中,您将获得崩溃的线程和异常。您可以使用以下方法轻松提取堆栈跟踪:
final StringWriter stackTrace = new StringWriter(); exception.printStackTrace(new PrintWriter(stackTrace)); 和/或如果需要,提取线程名称,并使用意图包将它们发送到活动。

希望这有助于

答案 3 :(得分:0)

只需使用Fabric及其Crashlytics平台 - 这将标记在不涉及用户输入的情况下检测到的任何崩溃。它会在检测到任何崩溃时自动通知您,并将识别特定问题,包括堆栈跟踪和版本控制。除了与他们的平台相关的许多其他有用功能之外,他们现在还加入了Firebase团队,以便在未来几周/几个月内继续关注。在过去的几个月里,我一直在使用该平台来分析我的25个应用程序,并发现它非常有效地识别和修复已出现的任何问题。