4

背景

谷歌的一些应用程序允许您从应用程序内发送反馈,而不是去 Play 商店。

例如这个(这个应用程序):

在此处输入图像描述

将此与原始版本进行比较: 在此处输入图像描述

问题

是否可以打开此对话框?

如果是这样,怎么做?当用户发布反馈时,真正发生了什么?它是直接发送到开发者控制台的吗?开发者可以回复这样的反馈吗?对话可以要求用户留下电子邮件吗?这个对话框有什么特点?

如果没有,他们用什么?它看起来非常类似于发送有关崩溃信息的对话框。难道他们使用相同的机制?

我认为它与发送错误的机制相同的原因是我写的这篇文章,但它仅受 API 14 支持,我不确定后果......

4

1 回答 1

2

是的,这是崩溃报告对话框。是的,报告会发送到开发者控制台。不,您不能回复反馈。是的,根据您引用的帖子,它需要 API 14,否则不能使用。无法自定义对话框。查看对话框功能的最佳方法是使用提供它的应用程序打开它。

根据您的问题,听起来您的要求超出了此对话框的能力范围,您可能需要发明一个本土解决方案或使用第三方解决方案。

我已使用此代码片段来启用发送反馈并显式打开带有已处理异常的对话框。

@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
public ApplicationErrorReport createErrorReport (Exception e) {
    ApplicationErrorReport report = new ApplicationErrorReport ();
    report.packageName = report.processName = this.getPackageName ();
    report.time = System.currentTimeMillis ();
    report.type = null == e ? ApplicationErrorReport.TYPE_NONE : ApplicationErrorReport.TYPE_CRASH;
    report.systemApp = false;

    if (null != e) {
        ApplicationErrorReport.CrashInfo crash = new ApplicationErrorReport.CrashInfo ();
        crash.exceptionClassName = e.getClass ().getSimpleName ();
        crash.exceptionMessage = e.getMessage ();

        StringWriter writer = new StringWriter ();
        PrintWriter printer = new PrintWriter (writer);
        e.printStackTrace (printer);

        crash.stackTrace = writer.toString ();

        StackTraceElement stack = e.getStackTrace ()[0];
        crash.throwClassName = stack.getClassName ();
        crash.throwFileName = stack.getFileName ();
        crash.throwLineNumber = stack.getLineNumber ();
        crash.throwMethodName = stack.getMethodName ();

        report.crashInfo = crash;
    }
    return report;
}
于 2014-03-11T05:27:42.200 回答