From 93c47891078601b658da4e68c1056b7c9bd8f07f Mon Sep 17 00:00:00 2001 From: Weblate Date: Fri, 16 Dec 2022 03:30:02 +0000 Subject: [PATCH 1/2] Update multiple translations Co-authored-by: Alain Deroy Co-authored-by: Weblate Translate-URL: http://translate.nift4.org/projects/foxmmm/fastlane/nl/ Translation: FoxMMM/Fastlane --- app/src/main/res/values-nl/strings.xml | 207 +++++++++++++++++- .../android/nl-NL/full_description.txt | 3 + .../android/nl-NL/short_description.txt | 1 + 3 files changed, 210 insertions(+), 1 deletion(-) create mode 100644 fastlane/metadata/android/nl-NL/full_description.txt create mode 100644 fastlane/metadata/android/nl-NL/short_description.txt diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index a6b3dae..eb90f0d 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -1,2 +1,207 @@ - \ No newline at end of file + + Fox\'s Mmm + Roottoegang geweigerd door Magisk + Magisk is niet geïnstalleerd op dit toestel + Laden… + Upgradebaar + Geïnstalleerd + De app is in blokkeermodus + Laden van modules duurde te lang, schakel mogelijk enkele modules uit + Geen internetverbinding + Kan system Webview niet openen + InstellingsActiviteit + Bijwerken + Geen beschrijving gevonden. + Download module + Installeer module + Module bijwerken + Logboek van wijzigingen + Website + Ondersteuning + Doneer + Bijwerken + Installeer + Beschrijving + Verwijderen + Configuratie + Rapporteer bugs + Gevonden modules + Modules zoeken + Module indienen + Vereist Android 6.0+ + Herstarten + Taal + Laatst bijgewerkt: + Pakketbron: + Online Pakketbron + door + Downloads: + Sterren: + Vereist ramdisk + Kan boot wijzigen + Deze module kan het boot image wijzigen + Min. Magisk %s + Min. Android + Max. Android + Blokkeermodus + Blokkeermodus verhindert de beheerder om acties op de modules uit te voeren + Herstart voorkomen + Voorkomt onverwacht herstarten + Instellingen + Activeer Monet + Info + Toon licenties + Licenties + Toon modules die volgens de metadata mogelijk niet werken op je toestel + Er is een nieuwe versie van Magisk beschikbaar! + Pakketbeheerders + Beveiliging + Uiterlijk + Algemeen + Modulebestanden verwijderen\? + Behouden + Verwijderen + Kan de bestanden van de module niet verwijderen + Thema + Thema Modus + Module ID: + Installeer gedownloade module + De geselecteerde module heeft een ongeldig formaat + Module van mindere kwaliteit + Lokale installatie + Broncode + Ingebouwde Magisk-module + Donkere terminalmode forceren + Je huidige bestandsbeheerder kan het bestand niet openen. + Installatie op afstand + Gebruik het \"magisk --install-module\" commando + Ontwikkelmodus actief + Ontwikkelmodus uitgeschakeld + Forceer Engelse taal + Toon modules van mindere kwaliteit + DNS over HTTPS + Kan in sommige gevallen verbindingsproblemen oplossen. (Is niet van toepassing op WebView.) + Geen Mmm + Tekstterugloop + Toon tekst op meerdere regels in plaats van alle tekst op dezelfde regel te plaatsen bij het installeren van een module. + Vervagen + Chips in de beschrijving uitschakelen + Pakketbeheerder actief + Pakketbeheerder uitgeschakeld + Pakketbeheerder toevoegen + Pakketbeheerder verwijderen + Aangepaste url + Link gekopieerd + Backup modules + Modules herstellen + Deze bewerking vereist een internetverbinding + Androidacy test modus + Gebruik staging Androidacy endpoint in plaats van release endpoint. (Dit start de app opnieuw op) + %i module updates gevonden + %i module updates gezocht + Klik om de app te openen + Kan het batterijgebruik verhogen + Testmelding + Vertaald door Alain Deroy + Rapporteer automatisch bugs en prestaties aan de ontwikkelaars + Gebruik een aangepaste API-sleutel voor Androidacy. Handig voor premium abonnees, om advertenties te verwijderen en meer. + Androidacy API-sleutel is leeg + Androidacy API-Sleutel + Huidige Androidacy API-sleutel + Kan de API-sleutel niet valideren. Controleer en probeer het opnieuw. + API-sleutel is geldig. + API-sleutel wordt gevalideerd... + API-sleutel wordt gevalideerd... + Een ogenblik geduld + API-sleutel opnieuw ingesteld + Waarschuwing! + Crash de app om te testen + Herverpakt als: + Verpakt van: + App opnieuw starten om wijzigingen toe te passen\? + De app moet opnieuw worden opgestart om deze instelling toe te passen + Herstarten + App wordt opnieuw gestart om staging-eindpunt uit te schakelen + Kan token voor Androidacy niet valideren. Probeer het later opnieuw. + Androidacy-update geblokkeerd door Captcha + De API-sleutel die je invoert, is dezelfde als de sleutel die al in gebruik is. + Meldingen toestaan\? + Toestemming + Schakel meldingen in om deze optie in te schakelen. + Niet meer vragen + Forceer zwart thema + Deze pakketbeheerder is momenteel uitgeschakeld + Deze build mist client-sleutels voor de Androidacy Repo. Download de GitHub-release als je gebruik wil maken van functies zoals modulebeoordelingen, automatische beveiligingscontroles en meer. + Volledige versie downloaden + Sommige repo\'s kunnen niet worden bijgewerkt + Update van %1$s mislukt. Probeer het later opnieuw. + Monet is niet compatibel met transparante thema\'s. + Vervagen is niet compatibel met transparante thema\'s. + Je stelt een transparant thema in + Aangepaste repo\'s zijn altijd ingeschakeld totdat je ze verwijdert. + Oeps! Het lijkt erop dat de app onverwacht is afgesloten. + Je naam + Kan geen contact maken met de Androidacy-server. Controleer je verbinding en probeer het opnieuw. + Je e-mail adres + Vertel ons wat er is gebeurd + Kan geen feedback verzenden vanwege een fout + Verzenden + Feedback met succes verzonden. We zullen het zo snel mogelijk bekijken + Kan geen feedback verzenden omdat er geen beschrijving is gegeven + Scroll naar online repo + %1$s v%2$s (%3$o) | %4$s Build + Officieel + Niet-officieel + Eerste installatie + Welkom! Deze app helpt je bij het installeren en beheren van Magisk-modules. Selecteer de onderstaande opties om aan de slag te gaan. Deze en meer kunnen later worden geconfigureerd vanuit de instellingen. + Installatie voltooien + Laat ons controleren op updates op de achtergrond. +\nDeze functie kan meer batterij gebruiken. + Schakel de Androidacy-repo in +\nBeschikt over gebruikersrecensies, automatische virusscans, snelle updates, een brede selectie en wordt ondersteund door Androidacy. + Schakel de Magisk Alt Repo in +\nVeel lakser dan het origineel. Heeft veel modules ten koste van enige veiligheid. + Schakel Sentry-crashrapportage en prestatiebewaking in. +\nAlle meldingen zijn strikt anoniem en vertrouwelijk. + U kunt later aangepaste repo\'s toevoegen in de instellingen. + Pakketbeheerders + Allerlei + Overslaan + Vervaging inschakelen op een apparaat van mindere kwaliteit + Deze repo heeft minder beperkingen en beoordelingen, wat kan leiden tot modules van lagere kwaliteit. Vrij basaal maar heeft veel modules. + Fox\'s Magisk Modulebeheerder + Geen toegang tot Root en/of Magisk + Kon bestand niet downloaden + Er is een nieuwe versie van de app beschikbaar + Favoriet + Vereist Android 12+ + Deze module vereist de aanwezigheid van een ramdisk + Beheerpakketten instellen + Toon niet-compatibele modules + De pakketbeheerder van Magisk modules + Een alternatief voor de Magisk-Modules-Repo met minder beperkingen. + Ingebouwde Substratum-module + Je huidige bestandsbeheerder heeft een niet-standaard antwoord gegeven. + Tijdens het testen veroorzaakte het problemen met het foutdiagnose-programma, daarom is deze optie enkel toegankelijk in ontwikkelmodus. +\nActiveren is op eigen risico! + Sommige modules declareren hun metagegevens niet correct, wat visuele storingen veroorzaakt en/of wijst op een slechte modulekwaliteit. +\nSchakel dit uit op eigen risico! + Schakel Fox\'s Mmm-extensies uit, zodat modules geen terminalextensies kunnen gebruiken. +\nHandig als een module misbruik maakt van Fox\'s Mmm extensies. + Deze repository kan een aantal niet-intrusieve reclameboodschappen weergeven om de server- en ontwikkelingskosten te dekken. Beschikt over beoordelingen, automatische virusscans en meer. + Updatecontrole van achtergrondmodules + Sommige vertalingen voor de huidige taal zijn niet up-to-date, overweeg om bij te dragen aan de app-vertalingen op GitHub + Als je dit uitschakelt, krijgt de ontwikkelaar geen automatische bugrapporten en dit kan het oplossen van problemen bemoeilijken + Valideren + Je stelt de app in om een niet-productie-eindpunt voor Androidacy te gebruiken. Dit kan leiden tot instabiliteit van de app en het niet laden van de online repo. Meld GEEN bugs als u deze schakelaar hebt ingeschakeld. De app wordt opnieuw gestart om repo\'s opnieuw te laden. + Kan token niet ophalen van Androidacy. Probeer het later opnieuw. + API-sleutel is gewijzigd. Start de app opnieuw om wijzigingen toe te passen. + We hebben de toestemming voor meldingen nodig om je op de hoogte te stellen van app- en module-updates. Als je deze machtiging niet verleent, worden er geen controles van achtergrondupdates uitgevoerd. + Forceert zwarte achtergronden voor AMOLED bij gebruik van donker thema. Houd er rekening mee dat dit contrastproblemen kan veroorzaken met sommige kleurthema\'s. + Transparante thema\'s kunnen enkele inconsistenties hebben en werken mogelijk niet op alle ROM\'s. Bovendien worden Monet en vervaging uitgeschakeld. Je kan dit op elk gewenst moment wijzigen. + Er is een fout opgetreden! Help ons de app te verbeteren door wat informatie over de onderstaande fout toe te voegen. +\nNaam en e-mailadres zijn optioneel maar stellen ons in staat om indien nodig contact met u op te nemen voor meer informatie. + Je probeert vervaging in te schakelen op een apparaat dat er mogelijk niet goed mee presteert. +\nJe kan dit inschakelen, maar het kan leiden tot een slechte gebruikerservaring en we raden je aan dit niet te doen. + \ No newline at end of file diff --git a/fastlane/metadata/android/nl-NL/full_description.txt b/fastlane/metadata/android/nl-NL/full_description.txt new file mode 100644 index 0000000..1f7431d --- /dev/null +++ b/fastlane/metadata/android/nl-NL/full_description.txt @@ -0,0 +1,3 @@ +Deze app wordt niet officieel ondersteund door Magisk en zijn ontwikkelaars. + +De modules die in deze app getoond worden zijn onafhankelijk van de app. Contacteer de beheerders van de repo voor ondersteuning. diff --git a/fastlane/metadata/android/nl-NL/short_description.txt b/fastlane/metadata/android/nl-NL/short_description.txt new file mode 100644 index 0000000..45e9d7e --- /dev/null +++ b/fastlane/metadata/android/nl-NL/short_description.txt @@ -0,0 +1 @@ +Modulebeheerder voor Magisk vermits de officiële app dit niet meer ondersteund. From ce03a0b36ace562be2a47f90a1ae80d99b667ab1 Mon Sep 17 00:00:00 2001 From: Fox2Code Date: Sat, 17 Dec 2022 19:04:55 +0100 Subject: [PATCH 2/2] My brain is melting right now. --- app/build.gradle | 13 +-- .../java/com/fox2code/mmm/MainActivity.java | 80 ++++++++++++------- .../com/fox2code/mmm/MainApplication.java | 6 +- .../mmm/settings/SettingsActivity.java | 10 +-- .../com/fox2code/mmm/utils/ProcessHelper.java | 22 +++++ .../com/fox2code/mmm/sentry/SentryMain.java | 6 ++ .../com/fox2code/mmm/sentry/SentryMain.java | 2 + 7 files changed, 95 insertions(+), 44 deletions(-) create mode 100644 app/src/main/java/com/fox2code/mmm/utils/ProcessHelper.java diff --git a/app/build.gradle b/app/build.gradle index 86e04a8..3f188f2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,11 +15,14 @@ android { Properties properties = new Properties() if (project.rootProject.file('local.properties').exists()) { properties.load(project.rootProject.file('local.properties').newDataInputStream()) - // FFS DO NOT CHANGE THIS, IT WILL BREAK THE BUILD - storeFile file(properties.getProperty('keystore.file')) - storePassword properties.getProperty('keystore.password') - keyAlias 'key0' - keyPassword properties.getProperty('keystore.password') + // java.lang.IllegalArgumentException: path may not be null or empty string. path='null' + if (properties.getProperty('keystore.file') != null) { + // FFS DO NOT CHANGE THIS, IT WILL BREAK THE BUILD + storeFile file(properties.getProperty('keystore.file')) + storePassword properties.getProperty('keystore.password') + keyAlias 'key0' + keyPassword properties.getProperty('keystore.password') + } } } } diff --git a/app/src/main/java/com/fox2code/mmm/MainActivity.java b/app/src/main/java/com/fox2code/mmm/MainActivity.java index 4425a1e..d9d8b6b 100644 --- a/app/src/main/java/com/fox2code/mmm/MainActivity.java +++ b/app/src/main/java/com/fox2code/mmm/MainActivity.java @@ -47,11 +47,13 @@ import com.fox2code.mmm.manager.ModuleManager; import com.fox2code.mmm.module.ModuleViewAdapter; import com.fox2code.mmm.module.ModuleViewListBuilder; import com.fox2code.mmm.repo.RepoManager; +import com.fox2code.mmm.sentry.SentryMain; import com.fox2code.mmm.settings.SettingsActivity; import com.fox2code.mmm.utils.BlurUtils; import com.fox2code.mmm.utils.ExternalHelper; import com.fox2code.mmm.utils.Http; import com.fox2code.mmm.utils.IntentHelper; +import com.fox2code.mmm.utils.ProcessHelper; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.android.material.materialswitch.MaterialSwitch; import com.google.android.material.progressindicator.LinearProgressIndicator; @@ -88,6 +90,7 @@ public class MainActivity extends FoxActivity implements SwipeRefreshLayout.OnRe private SearchView searchView; private boolean initMode; private boolean doSetupNowRunning; + private boolean doSetupRestarting; private boolean urlFactoryInstalled = false; public MainActivity() { @@ -180,6 +183,7 @@ public class MainActivity extends FoxActivity implements SwipeRefreshLayout.OnRe this.cardIconifyUpdate(); this.updateScreenInsets(this.getResources().getConfiguration()); + checkShowInitialSetup(); InstallerInitializer.tryGetMagiskPathAsync(new InstallerInitializer.Callback() { @Override public void onPathReceived(String path) { @@ -201,23 +205,15 @@ public class MainActivity extends FoxActivity implements SwipeRefreshLayout.OnRe } public void commonNext() { - doSetupNowRunning = true; - doSetupNow(); - - // Wait for doSetupNow to finish - while (doSetupNowRunning) { - try { - //noinspection BusyWait - Thread.sleep(100); - } catch (InterruptedException ignored) { - } + updateScreenInsets(); // Fix an edge case + if (waitInitialSetupFinished()) { + return; } /*if (BuildConfig.DEBUG) { SharedPreferences prefs = MainApplication.getSharedPreferences(); if (BuildConfig.DEBUG) Log.d("MainActivity", String.format("Background update check: %s, Crash reporting: %s, Androidacy repo: %s, Magisk alt repo: %s", prefs.getBoolean("pref_background_update_check", false), prefs.getBoolean("pref_crash_reporting", false), prefs.getBoolean("pref_androidacy_repo_enabled", false), prefs.getBoolean("pref_magisk_alt_repo_enabled", false))); }*/ swipeRefreshBlocker = System.currentTimeMillis() + 5_000L; - updateScreenInsets(); // Fix an edge case if (MainApplication.isShowcaseMode()) moduleViewListBuilder.addNotification(NotificationType.SHOWCASE_MODE); if (!Http.hasWebView()) // Check Http for WebView availability @@ -518,7 +514,10 @@ public class MainActivity extends FoxActivity implements SwipeRefreshLayout.OnRe @Override public void onRefresh() { - if (this.swipeRefreshBlocker > System.currentTimeMillis() || this.initMode || this.progressIndicator == null || this.progressIndicator.getVisibility() == View.VISIBLE) { + if (this.swipeRefreshBlocker > System.currentTimeMillis() || + this.initMode || this.progressIndicator == null || + this.progressIndicator.getVisibility() == View.VISIBLE || + this.doSetupNowRunning) { this.swipeRefreshLayout.setRefreshing(false); return; // Do not double scan } @@ -702,13 +701,14 @@ public class MainActivity extends FoxActivity implements SwipeRefreshLayout.OnRe // Method to show a setup box on first launch @SuppressLint({"InflateParams", "RestrictedApi", "UnspecifiedImmutableFlag", "ApplySharedPref"}) - private void doSetupNow() { + private void checkShowInitialSetup() { if (BuildConfig.DEBUG) Log.d("NoodleDebug", "Do setup now"); // Check if this is the first launch SharedPreferences prefs = MainApplication.getSharedPreferences(); - boolean firstLaunch = MainApplication.getSharedPreferences().getBoolean("first_launch", true); + boolean firstLaunch = prefs.getBoolean("first_launch", true); if (BuildConfig.DEBUG) Log.d("Noodle", "First launch: " + firstLaunch); if (firstLaunch) { + doSetupNowRunning = true; // Show setup box runOnUiThread(() -> { MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(this); @@ -720,26 +720,30 @@ public class MainActivity extends FoxActivity implements SwipeRefreshLayout.OnRe // For sdk >= 31, use MaterialSwitch instead of MaterialSwitch // For now, we'll just have the positive button save the preferences and dismiss the dialog builder.setPositiveButton(R.string.setup_button, (dialog, which) -> { - // Set the preferences - prefs.edit().putBoolean("pref_background_update_check", - ((MaterialSwitch) Objects.requireNonNull(((AlertDialog) dialog).findViewById(R.id.setup_background_update_check))).isChecked()).commit(); - prefs.edit().putBoolean("pref_crash_reporting", ((MaterialSwitch) Objects.requireNonNull(((AlertDialog) dialog).findViewById(R.id.setup_crash_reporting))).isChecked()).commit(); - prefs.edit().putBoolean("pref_androidacy_repo_enabled", ((MaterialSwitch) Objects.requireNonNull(((AlertDialog) dialog).findViewById(R.id.setup_androidacy_repo))).isChecked()).commit(); - prefs.edit().putBoolean("pref_magisk_alt_repo_enabled", ((MaterialSwitch) Objects.requireNonNull(((AlertDialog) dialog).findViewById(R.id.setup_magisk_alt_repo))).isChecked()).commit(); + // Set the preferences and pref_first_launch to false + prefs.edit().putBoolean("first_launch", false) + .putBoolean("pref_background_update_check", ((MaterialSwitch) + Objects.requireNonNull(((AlertDialog) dialog).findViewById(R.id.setup_background_update_check))).isChecked()) + .putBoolean("pref_crash_reporting", + ((MaterialSwitch) Objects.requireNonNull(((AlertDialog) dialog).findViewById(R.id.setup_crash_reporting))).isChecked()) + .putBoolean("pref_androidacy_repo_enabled", ((MaterialSwitch) + Objects.requireNonNull(((AlertDialog) dialog).findViewById(R.id.setup_androidacy_repo))).isChecked()) + .putBoolean("pref_magisk_alt_repo_enabled", ((MaterialSwitch) + Objects.requireNonNull(((AlertDialog) dialog).findViewById(R.id.setup_magisk_alt_repo))).isChecked()).apply(); if (BuildConfig.DEBUG) { - Log.d("MainActivity", String.format("Background update check: %s, Crash reporting: %s, Androidacy repo: %s, Magisk alt repo: %s", prefs.getBoolean("pref_background_update_check", false), prefs.getBoolean("pref_crash_reporting", false), prefs.getBoolean("pref_androidacy_repo_enabled", false), prefs.getBoolean("pref_magisk_alt_repo_enabled", false))); + Log.d("MainActivity", String.format("Background update check: %s, Crash reporting: %s, Androidacy repo: %s, Magisk alt repo: %s", + prefs.getBoolean("pref_background_update_check", false), prefs.getBoolean("pref_crash_reporting", false), + prefs.getBoolean("pref_androidacy_repo_enabled", false), prefs.getBoolean("pref_magisk_alt_repo_enabled", false))); + } + // Only for sentry switching we need to restart I think? + if (SentryMain.isSentryEnabled() != MainApplication.isCrashReportingEnabled()) { + doSetupRestarting = true; + ProcessHelper.restartApplicationProcess(this); } - // Set pref_first_launch to false - MainApplication.getSharedPreferences().edit().putBoolean("first_launch", false).commit(); - // Restart the app - Intent intent = new Intent(this, MainActivity.class); - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - finish(); - startActivity(intent); ensurePermissions(); }); builder.setNegativeButton(R.string.setup_button_skip, (dialog, which) -> { - MainApplication.getSharedPreferences().edit().putBoolean("first_launch", false).commit(); + MainApplication.getSharedPreferences().edit().putBoolean("first_launch", false).apply(); dialog.dismiss(); ensurePermissions(); }); @@ -755,4 +759,22 @@ public class MainActivity extends FoxActivity implements SwipeRefreshLayout.OnRe ensurePermissions(); } } + + /** + * @return true if the load workflow must be stopped. + */ + private boolean waitInitialSetupFinished() { + if (BuildConfig.DEBUG) Log.d("NoodleDebug", "waitInitialSetupFinished"); + if (doSetupNowRunning) updateScreenInsets(); // Fix an edge case + try { + // Wait for doSetupNow to finish + while (doSetupNowRunning) { + //noinspection BusyWait + Thread.sleep(50); + } + } catch (InterruptedException e) { + return true; + } + return doSetupRestarting; + } } \ No newline at end of file diff --git a/app/src/main/java/com/fox2code/mmm/MainApplication.java b/app/src/main/java/com/fox2code/mmm/MainApplication.java index f4e1fb9..8ed3ccb 100644 --- a/app/src/main/java/com/fox2code/mmm/MainApplication.java +++ b/app/src/main/java/com/fox2code/mmm/MainApplication.java @@ -61,6 +61,7 @@ public class MainApplication extends FoxApplication implements androidx.work.Con @SuppressLint("StaticFieldLeak") private static MainApplication INSTANCE; private static boolean firstBoot; + private static boolean loadSentryInitialized; static { Shell.setDefaultBuilder(shellBuilder = Shell.Builder.create().setFlags(Shell.FLAG_REDIRECT_STDERR).setTimeout(10).setInitializers(InstallerInitializer.class)); @@ -168,7 +169,9 @@ public class MainApplication extends FoxApplication implements androidx.work.Con } public static boolean isCrashReportingEnabled() { - return getSharedPreferences().getBoolean("pref_crash_reporting", BuildConfig.DEFAULT_ENABLE_CRASH_REPORTING); + return SentryMain.IS_SENTRY_INSTALLED && + getSharedPreferences().getBoolean("pref_crash_reporting", + BuildConfig.DEFAULT_ENABLE_CRASH_REPORTING); } public static SharedPreferences getBootSharedPreferences() { @@ -306,7 +309,6 @@ public class MainApplication extends FoxApplication implements androidx.work.Con Log.d("MainApplication", "Emoji compat loaded!"); }, "Emoji compat init.").start(); } - SentryMain.initialize(this); if (Objects.equals(BuildConfig.ANDROIDACY_CLIENT_ID, "")) { Log.w("MainApplication", "Androidacy client id is empty! Please set it in androidacy" + ".properties. Will not enable Androidacy."); diff --git a/app/src/main/java/com/fox2code/mmm/settings/SettingsActivity.java b/app/src/main/java/com/fox2code/mmm/settings/SettingsActivity.java index 9a10a45..9babb13 100644 --- a/app/src/main/java/com/fox2code/mmm/settings/SettingsActivity.java +++ b/app/src/main/java/com/fox2code/mmm/settings/SettingsActivity.java @@ -62,6 +62,7 @@ import com.fox2code.mmm.sentry.SentryMain; import com.fox2code.mmm.utils.ExternalHelper; import com.fox2code.mmm.utils.Http; import com.fox2code.mmm.utils.IntentHelper; +import com.fox2code.mmm.utils.ProcessHelper; import com.fox2code.rosettax.LanguageActivity; import com.fox2code.rosettax.LanguageSwitcher; import com.google.android.material.dialog.MaterialAlertDialogBuilder; @@ -148,14 +149,7 @@ public class SettingsActivity extends FoxActivity implements LanguageActivity { @Override @SuppressLint("InlinedApi") public void refreshRosettaX() { - Intent mStartActivity = new Intent(this, MainActivity.class); - mStartActivity.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); - int mPendingIntentId = 123456; - PendingIntent mPendingIntent = PendingIntent.getActivity(this, mPendingIntentId, - mStartActivity, PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE); - AlarmManager mgr = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE); - mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 100, mPendingIntent); - System.exit(0); // Exit app process + ProcessHelper.restartApplicationProcess(this); } @Override diff --git a/app/src/main/java/com/fox2code/mmm/utils/ProcessHelper.java b/app/src/main/java/com/fox2code/mmm/utils/ProcessHelper.java new file mode 100644 index 0000000..69e7f6f --- /dev/null +++ b/app/src/main/java/com/fox2code/mmm/utils/ProcessHelper.java @@ -0,0 +1,22 @@ +package com.fox2code.mmm.utils; + +import android.app.AlarmManager; +import android.app.PendingIntent; +import android.content.Context; +import android.content.Intent; + +import com.fox2code.mmm.MainActivity; + +public class ProcessHelper { + private static final int sPendingIntentId = 123456; + + public static void restartApplicationProcess(Context context) { + Intent mStartActivity = new Intent(context, MainActivity.class); + mStartActivity.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); + PendingIntent mPendingIntent = PendingIntent.getActivity(context, sPendingIntentId, + mStartActivity, PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE); + AlarmManager mgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); + mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 100, mPendingIntent); + System.exit(0); // Exit app process + } +} diff --git a/app/src/sentry/java/com/fox2code/mmm/sentry/SentryMain.java b/app/src/sentry/java/com/fox2code/mmm/sentry/SentryMain.java index ceeae18..30c390f 100644 --- a/app/src/sentry/java/com/fox2code/mmm/sentry/SentryMain.java +++ b/app/src/sentry/java/com/fox2code/mmm/sentry/SentryMain.java @@ -17,6 +17,7 @@ import io.sentry.android.fragment.FragmentLifecycleIntegration; public class SentryMain { public static final boolean IS_SENTRY_INSTALLED = true; private static final String TAG = "SentryMain"; + private static boolean sentryEnabled = false; /** * Initialize Sentry @@ -39,6 +40,7 @@ public class SentryMain { if (!MainApplication.isCrashReportingEnabled()) { options.setDsn(""); } else { + sentryEnabled = true; // Set sentry state to enabled options.addIntegration(new FragmentLifecycleIntegration(mainApplication, true, true)); options.setCollectAdditionalContext(true); options.setAttachThreads(true); @@ -82,4 +84,8 @@ public class SentryMain { Sentry.addBreadcrumb(sentryBreadcrumb.breadcrumb); } } + + public static boolean isSentryEnabled() { + return sentryEnabled; + } } diff --git a/app/src/sentryless/java/com/fox2code/mmm/sentry/SentryMain.java b/app/src/sentryless/java/com/fox2code/mmm/sentry/SentryMain.java index 7d3e354..d8e9138 100644 --- a/app/src/sentryless/java/com/fox2code/mmm/sentry/SentryMain.java +++ b/app/src/sentryless/java/com/fox2code/mmm/sentry/SentryMain.java @@ -8,4 +8,6 @@ public class SentryMain { public static void initialize(MainApplication mainApplication) {} public static void addSentryBreadcrumb(SentryBreadcrumb sentryBreadcrumb) {} + + public static boolean isSentryEnabled() { return false; } }