From 53911fa41089061c1fa99cde9696722d0a0b967c Mon Sep 17 00:00:00 2001 From: Alinson Xavier Date: Thu, 19 May 2016 11:39:17 -0400 Subject: [PATCH] Send bug report on the body of email, instead of attachment --- .../java/org/isoron/uhabits/BaseActivity.java | 2 +- .../org/isoron/uhabits/HabitsApplication.java | 27 ++++++++++++++----- .../java/org/isoron/uhabits/MainActivity.java | 22 +++++++++++---- 3 files changed, 39 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/org/isoron/uhabits/BaseActivity.java b/app/src/main/java/org/isoron/uhabits/BaseActivity.java index 1444f228a..6d59a00d0 100644 --- a/app/src/main/java/org/isoron/uhabits/BaseActivity.java +++ b/app/src/main/java/org/isoron/uhabits/BaseActivity.java @@ -154,7 +154,7 @@ abstract public class BaseActivity extends AppCompatActivity implements Thread.U try { ex.printStackTrace(); - HabitsApplication.generateLogFile(); + HabitsApplication.dumpBugReportToFile(); } catch(Exception e) { diff --git a/app/src/main/java/org/isoron/uhabits/HabitsApplication.java b/app/src/main/java/org/isoron/uhabits/HabitsApplication.java index 27a8fbf43..dee4ca17d 100644 --- a/app/src/main/java/org/isoron/uhabits/HabitsApplication.java +++ b/app/src/main/java/org/isoron/uhabits/HabitsApplication.java @@ -36,6 +36,7 @@ import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; +import java.util.LinkedList; public class HabitsApplication extends Application { @@ -87,6 +88,7 @@ public class HabitsApplication extends Application public static String getLogcat() throws IOException { + int maxNLines = 250; StringBuilder builder = new StringBuilder(); String[] command = new String[] { "logcat", "-d"}; @@ -95,10 +97,18 @@ public class HabitsApplication extends Application InputStreamReader in = new InputStreamReader(process.getInputStream()); BufferedReader bufferedReader = new BufferedReader(in); + LinkedList log = new LinkedList<>(); + String line; while ((line = bufferedReader.readLine()) != null) { - builder.append(line); + log.addLast(line); + if(log.size() > maxNLines) log.removeFirst(); + } + + for(String l : log) + { + builder.append(l); builder.append('\n'); } @@ -130,10 +140,8 @@ public class HabitsApplication extends Application } @NonNull - public static File generateLogFile() throws IOException + public static File dumpBugReportToFile() throws IOException { - String logcat = getLogcat(); - String deviceInfo = getDeviceInfo(); String date = DateHelper.getBackupDateFormat().format(DateHelper.getLocalTime()); if(context == null) throw new RuntimeException("application context should not be null"); @@ -142,10 +150,17 @@ public class HabitsApplication extends Application File logFile = new File(String.format("%s/Log %s.txt", dir.getPath(), date)); FileWriter output = new FileWriter(logFile); - output.write(deviceInfo); - output.write(logcat); + output.write(generateBugReport()); output.close(); return logFile; } + + @NonNull + public static String generateBugReport() throws IOException + { + String logcat = getLogcat(); + String deviceInfo = getDeviceInfo(); + return deviceInfo + "\n" + logcat; + } } diff --git a/app/src/main/java/org/isoron/uhabits/MainActivity.java b/app/src/main/java/org/isoron/uhabits/MainActivity.java index a8dad23b8..77c8625a1 100644 --- a/app/src/main/java/org/isoron/uhabits/MainActivity.java +++ b/app/src/main/java/org/isoron/uhabits/MainActivity.java @@ -53,7 +53,6 @@ import org.isoron.uhabits.widgets.HistoryWidgetProvider; import org.isoron.uhabits.widgets.ScoreWidgetProvider; import org.isoron.uhabits.widgets.StreakWidgetProvider; -import java.io.File; import java.io.IOException; public class MainActivity extends BaseActivity @@ -239,12 +238,25 @@ public class MainActivity extends BaseActivity { try { - File logFile = HabitsApplication.generateLogFile(); + HabitsApplication.dumpBugReportToFile(); + } + catch (IOException e) + { + // ignored + } + + try + { + String log = "---------- BUG REPORT BEGINS ----------\n"; + log += HabitsApplication.generateBugReport(); + log += "---------- BUG REPORT ENDS ------------\n"; Intent intent = new Intent(); - intent.setAction(Intent.ACTION_SENDTO); - intent.setData(Uri.parse(getString(R.string.bugReportURL))); - intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(logFile)); + intent.setAction(Intent.ACTION_SEND); + intent.setType("message/rfc822"); + intent.putExtra(Intent.EXTRA_EMAIL, new String[] { "dev@loophabits.org" }); + intent.putExtra(Intent.EXTRA_SUBJECT, "Bug Report - Loop Habit Tracker"); + intent.putExtra(Intent.EXTRA_TEXT, log); startActivity(intent); } catch (IOException e)