我按照设置ACRA的说明使用-
发送电子邮件通过Email发送报表
然而,我不知道如何在没有任何电子邮件客户端可供用户选择的情况下,在崩溃时无声地向开发人员发送电子邮件。
@ReportsCrashes(formKey = "", mailTo = "myemail@xyz.com",
customReportContent = { ReportField.ANDROID_VERSION, ReportField.PHONE_MODEL, ReportField.CUSTOM_DATA,
ReportField.STACK_TRACE, ReportField.LOGCAT },
logcatArguments = { "-t", "200", "-v", "long","test:I" ,"*:D","*:S"},
mode = ReportingInteractionMode.SILENT,
reportType=Type.JSON)
有了上面的设置,我仍然可以选择默认的电子邮件客户端来发送崩溃报告。
如何直接操作?
你不能。Android框架不允许。
您可以通过HTTP来实现,如果您实现了自己的邮件服务,只需要这样做:
创建一个新类:
public class MyCrashSender implements ReportSender {
@Override
public void send(CrashReportData report) throws ReportSenderException {
// make your http post
// e.g. final HttpPost httpPost = new HttpPost(MY_service_url);
.
.
.
//httpClient.execute(httpPost);
}
}
然后在你的activity或者你的Application中当你init acra…
ACRA.init(this);
MyCrashSender crashSender = new MyCrashSender();
ACRA.getErrorReporter().setReportSender(crashSender);
可以在http post中附加设备的主邮箱
如果您只想要静默报告,电子邮件不一定是最佳选择。我建议使用任何后端崩溃收集服务,例如HockeyApp。
通过使用它,您不仅可以获得电子邮件通知(HockeyApp发送到您的邮箱的警报),而且还可以方便地记录崩溃报告(其中包括报告分组,在您的错误跟踪器中创建票据等)
这个库帮助我整合了ACRA和HockeyApp: https://github.com/antoche/android-debug.
您将让它实现您自己的ReportSender。
这个ReportSender实现可以使用java mail api无声地将崩溃报告发送到电子邮件中。这篇文章详细介绍了它:http://androidcocktail.blogspot.in/2015/05/silentemail-crash-report-using-acra.html