diff --git a/app/build.gradle b/app/build.gradle index 5091df5ae..9e20496d1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,6 +67,7 @@ ext.uploadServiceVersion = "3.5.2" ext.torrentstreamVersion = "2.5.0" ext.netCipherVersion = "2.0.0-alpha1" +ext.acraVersion = "5.1.3" dependencies { implementation 'androidx.appcompat:appcompat:1.0.2' @@ -113,4 +114,8 @@ dependencies { implementation 'com.github.adrielcafe:AndroidAudioRecorder:0.3.0' implementation 'yogesh.firzen:MukkiyaSevaigal:1.0.6' + + implementation "ch.acra:acra-mail:$acraVersion" + implementation "ch.acra:acra-limiter:$acraVersion" + implementation "ch.acra:acra-notification:$acraVersion" } diff --git a/app/src/main/java/app/fedilab/android/activities/MainApplication.java b/app/src/main/java/app/fedilab/android/activities/MainApplication.java index 02055f1e8..6375cbce5 100644 --- a/app/src/main/java/app/fedilab/android/activities/MainApplication.java +++ b/app/src/main/java/app/fedilab/android/activities/MainApplication.java @@ -16,6 +16,8 @@ package app.fedilab.android.activities; import android.content.Context; import android.content.SharedPreferences; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; import android.os.StrictMode; import androidx.multidex.MultiDex; import androidx.multidex.MultiDexApplication; @@ -26,6 +28,13 @@ import com.franmontiel.localechanger.LocaleChanger; import net.gotev.uploadservice.UploadService; +import org.acra.ACRA; +import org.acra.annotation.AcraNotification; +import org.acra.config.CoreConfigurationBuilder; +import org.acra.config.LimiterConfigurationBuilder; +import org.acra.config.MailSenderConfigurationBuilder; +import org.acra.data.StringFormat; + import java.util.ArrayList; import java.util.List; import java.util.Locale; @@ -44,6 +53,8 @@ import static app.fedilab.android.helper.Helper.initNetCipher; * Main application, jobs are launched here. */ +@AcraNotification( + resIcon = R.mipmap.ic_launcher, resTitle = R.string.crash_title, resChannelName = R.string.set_crash_reports, resText = R.string.crash_message) public class MainApplication extends MultiDexApplication { @@ -59,9 +70,10 @@ public class MainApplication extends MultiDexApplication { NotificationsSyncJob.schedule(false); StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder(); StrictMode.setVmPolicy(builder.build()); + SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE); try { List SUPPORTED_LOCALES = new ArrayList<>(); - SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE); + String defaultLocaleString = sharedpreferences.getString(Helper.SET_DEFAULT_LOCALE_NEW, null); if( defaultLocaleString != null){ Locale defaultLocale; @@ -77,6 +89,24 @@ public class MainApplication extends MultiDexApplication { } LocaleChanger.initialize(getApplicationContext(), SUPPORTED_LOCALES); }catch (Exception ignored){} + + + boolean send_crash_reports = sharedpreferences.getBoolean(Helper.SET_SEND_CRASH_REPORTS, false); + if( send_crash_reports) { + CoreConfigurationBuilder ACRABuilder = new CoreConfigurationBuilder(this); + ACRABuilder.setBuildConfigClass(BuildConfig.class).setReportFormat(StringFormat.KEY_VALUE_LIST); + String version = ""; + try { + PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0); + version = pInfo.versionName; + } catch (PackageManager.NameNotFoundException ignored) { + } + ACRABuilder.getPluginConfigurationBuilder(MailSenderConfigurationBuilder.class).setReportAsFile(false).setMailTo("support@fedilab.app").setSubject(" Crash Report for Fedilab " + version).setEnabled(true); + ACRABuilder.getPluginConfigurationBuilder(LimiterConfigurationBuilder.class).setEnabled(true); + ACRA.init(this, ACRABuilder); + } + + //Initialize upload service UploadService.NAMESPACE = BuildConfig.APPLICATION_ID; initNetCipher(this); diff --git a/app/src/main/java/app/fedilab/android/fragments/ContentSettingsFragment.java b/app/src/main/java/app/fedilab/android/fragments/ContentSettingsFragment.java index 7a008650c..321ebf0f4 100644 --- a/app/src/main/java/app/fedilab/android/fragments/ContentSettingsFragment.java +++ b/app/src/main/java/app/fedilab/android/fragments/ContentSettingsFragment.java @@ -740,6 +740,22 @@ public class ContentSettingsFragment extends Fragment implements ScreenShotable } }); + + boolean send_crash_reports = sharedpreferences.getBoolean(Helper.SET_SEND_CRASH_REPORTS, false); + final CheckBox set_enable_crash_report = rootView.findViewById(R.id.set_enable_crash_report); + set_enable_crash_report.setChecked(send_crash_reports); + + set_enable_crash_report.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + SharedPreferences.Editor editor = sharedpreferences.edit(); + editor.putBoolean(Helper.SET_SEND_CRASH_REPORTS, set_enable_crash_report.isChecked()); + editor.apply(); + if( getActivity() != null) + getActivity().recreate(); + } + }); + int truncate_toots_size = sharedpreferences.getInt(Helper.SET_TRUNCATE_TOOTS_SIZE, 0); SeekBar set_truncate_size = rootView.findViewById(R.id.set_truncate_size); set_truncate_size.setMax(20); diff --git a/app/src/main/java/app/fedilab/android/helper/Helper.java b/app/src/main/java/app/fedilab/android/helper/Helper.java index 1e7818a36..e047b0699 100644 --- a/app/src/main/java/app/fedilab/android/helper/Helper.java +++ b/app/src/main/java/app/fedilab/android/helper/Helper.java @@ -358,6 +358,7 @@ public class Helper { public static final String SET_DISPLAY_CONTENT_AFTER_FM = "set_display_content_after_fm"; public static final String SET_FEATURED_TAGS ="set_featured_tags"; public static final String SET_DISPLAY_NEWS_FROM_FEDILAB ="set_display_news_from_fedilab"; + public static final String SET_SEND_CRASH_REPORTS ="set_send_crash_reports"; public static final String SET_FEATURED_TAG_ACTION ="set_featured_tag_action"; public static final String SET_HIDE_DELETE_BUTTON_ON_TAB = "set_hide_delete_notification_on_tab"; public static final String SET_RETRIEVE_METADATA_IF_URL_FROM_EXTERAL = "set_retrieve_metadata_share_from_extras"; diff --git a/app/src/main/res/layout/fragment_settings_reveal.xml b/app/src/main/res/layout/fragment_settings_reveal.xml index 6b2c6026a..9cf182312 100644 --- a/app/src/main/res/layout/fragment_settings_reveal.xml +++ b/app/src/main/res/layout/fragment_settings_reveal.xml @@ -928,6 +928,40 @@ + + + + + + + + Delete this instance? You are going to delete %s from your followed instances. Translate in - Fedilab has stopped :( - You can send me by email the crash report. It will help to fix it :)\n\nYou can add additional content. Thank you! - Ask for sending crash reports by email? Follow instance You already follow this instance! The instance is followed! @@ -1118,7 +1115,11 @@ Add an instance Export instances Import instances - + Crash reports + Enable crash reports + If enabled, a crash report will be created locally and then you will be able to share it. + Fedilab has stopped :( + You can send me by email the crash report. It will help to fix it :)\n\nYou can add additional content. Thank you! %d vote %d votes