Skip to content

Instantly share code, notes, and snippets.

@jaysoffian
Forked from ashtom/HockeySender.java
Last active December 15, 2015 19:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jaysoffian/5310541 to your computer and use it in GitHub Desktop.
Save jaysoffian/5310541 to your computer and use it in GitHub Desktop.
package net.hockeyapp.android.demo;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.acra.ACRA;
import org.acra.collector.CrashReportData;
import org.acra.ReportField;
import org.acra.sender.ReportSender;
import org.acra.sender.ReportSenderException;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import android.text.format.Time;
import android.util.TimeFormatException;
public class HockeyAppSender implements ReportSender {
private static String reportUrl = null;
public static final ReportField[] HOCKEY_APP_REPORT_FIELDS = {
ReportField.ANDROID_VERSION,
ReportField.APP_VERSION_CODE,
ReportField.INSTALLATION_ID,
ReportField.PACKAGE_NAME,
ReportField.PHONE_MODEL,
ReportField.USER_CRASH_DATE,
ReportField.USER_EMAIL };
public HockeyAppSender(String appId) {
reportUrl = "https://rink.hockeyapp.net/api/2/apps/" + appId + "/crashes/";
}
@Override
public void send(CrashReportData report) throws ReportSenderException {
String log = createCrashLog(report);
try {
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(reportUrl);
List<NameValuePair> parameters = new ArrayList<NameValuePair>();
parameters.add(new BasicNameValuePair("raw", log));
parameters.add(new BasicNameValuePair("userID", report.get(ReportField.INSTALLATION_ID)));
parameters.add(new BasicNameValuePair("contact", report.get(ReportField.USER_EMAIL)));
parameters.add(new BasicNameValuePair("description", report.get(ReportField.USER_COMMENT)));
httpPost.setEntity(new UrlEncodedFormEntity(parameters, HTTP.UTF_8));
httpClient.execute(httpPost);
} catch (IOException e) {
throw new ReportSenderException("Error while sending report", e);
}
}
private String createCrashLog(CrashReportData report) {
Date now;
try {
Time crashDate = new Time();
crashDate.parse3339(report.get(ReportField.USER_CRASH_DATE));
now = new Date(crashDate.toMillis(false));
} catch (TimeFormatException e) {
now = new Date();
}
StringBuilder log = new StringBuilder("");
log.append("Package: " + report.get(ReportField.PACKAGE_NAME) + "\n");
log.append("Version: " + report.get(ReportField.APP_VERSION_CODE) + "\n");
log.append("Android: " + report.get(ReportField.ANDROID_VERSION) + "\n");
log.append("Manufacturer: " + android.os.Build.MANUFACTURER + "\n");
log.append("Model: " + report.get(ReportField.PHONE_MODEL) + "\n");
log.append("Date: " + now + "\n");
log.append("\n");
log.append(report.get(ReportField.STACK_TRACE));
return log.toString();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment