如何显示“发送反馈给X”对话框?

时间:2013-12-11 20:01:52

标签: android android-alertdialog user-feedback

背景

Google的某些应用允许您从应用内发送反馈,而不是去Play商店。

例如这个(this app):

enter image description here

将其与原始版本进行比较: enter image description here

问题

是否可以打开此对话框?

如果是这样,怎么样?当用户发布反馈时会发生什么?它是直接发送到开发者控制台吗?开发人员可以回复这样的反馈吗?对话框可以请求用户留下电子邮件吗?这个对话框有什么功能?

如果没有,他们使用了什么?它看起来与发送崩溃信息的对话框非常相似。是不是他们使用相同的机制?

我认为发送错误的机制相同的原因是this post我已经写过,但它只支持API 14,我不确定后果......

1 个答案:

答案 0 :(得分: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;
}