2013-07-04 55 views
4

我试图从我的应用程序向我的域或邮件发送崩溃报告,但仍然失败。如何使用ACRA发送Android崩溃报告

要获取邮件的崩溃报告,我做

@ReportsCrashes(

 formKey = "", 
     mailTo = "[email protected]" 
) 

和响应是, 发送文件00,approved.stacktrace

checkAndSendReports - 完成

为了得到我的域名的崩溃报告,我做了

@ReportsCrashes(

 formKey = "", 
     formUri = "http://www.abc.com/test1" 
) 

和响应是, 发送文件1372856882000,approved.stacktrace 无法发送崩溃报告1372856882000,approved.stacktrace org.acra.sender.ReportSenderException:发送形式的错误通过Http POST报告

任何帮助对我来说都很方便,我很感激。

回答

23

ACRA对我的作品通过电子邮件发送的报告时我做的,正是因为他们在自己的文件说:

@ReportsCrashes(mailTo = "[email protected]", // my email here 
       mode = ReportingInteractionMode.TOAST, 
       resToastText = R.string.crash_toast_text) 

https://github.com/ACRA/acra/wiki/Report-Destinations#sending-reports-by-email

你可能忘了土司的一部分。或者可以是你没有电子邮件程序(例如当你在模拟器上运行时)。

我认为不再支持通过Google文档发送报告。

+1

我想在我的应用程序中运行对我工作正常的阿拉。但问题是我没有从那里收到任何电子邮件。请帮助我 – Satheesh

1

不,不喜欢亚历克斯说,该模式属性没有releation的报告类型,您可以用邮寄地址类型看它的源代码在github上 ,你应该确保:

  1. 你的应用程序有权连接网络;
  2. 在您的设备中有一个电子邮件程序,如Alex说的;
  3. 你在应用程序的oncreate()中调用了ACRA.init(this)方法吗?

如果所有这些都已完成,那么运行您的应用程序,它会记录您配置电子邮件的方式,如用户名和密码等。

+1

我不认为应用程序必须具有INTERNET许可才能通过ACRA邮寄报告 –

+0

是的,您是对的,有Internet权限不是必须的。我再次尝试,我发现,formKey必须不为null,如果它为null,当应用程序崩溃时,android系统将显示一个对话框供您选择要处理的程序,即使您选择了电子邮件程序,它仍然不会发送电子邮件。 – user2327225

+0

此外,模式属性不是必须的,如果你配置它,当你应用程序崩溃时,系统不会弹出崩溃窗口 – user2327225

1

您的应用程序类应如下所示。

import android.app.Application; 

    import org.acra.ACRA; 
    import org.acra.ReportField; 
    import org.acra.ReportingInteractionMode; 
    import org.acra.annotation.ReportsCrashes; 


    @ReportsCrashes(mailTo = "[email protected]", customReportContent = { 
      ReportField.APP_VERSION_CODE, ReportField.APP_VERSION_NAME, 
      ReportField.ANDROID_VERSION, ReportField.PHONE_MODEL, 
      ReportField.CUSTOM_DATA, ReportField.STACK_TRACE, ReportField.LOGCAT}, 
      mode = ReportingInteractionMode.TOAST, resToastText = R.string.crash_toast_text) 
    public class MyApplication extends Application { 

     @Override 
     public void onCreate() { 
      super.onCreate(); 
      ACRA.init(this); 
     } 
    }