From baeea2916e0a66bed7d5598bb776bef4241bd3d2 Mon Sep 17 00:00:00 2001 From: Mathias-Boulay Date: Fri, 19 May 2023 23:49:21 +0200 Subject: [PATCH] Feat[UI]: opportunistic log sharing --- .../java/net/kdt/pojavlaunch/ExitActivity.java | 5 ++++- .../src/main/java/net/kdt/pojavlaunch/Tools.java | 16 ++++++++++++++++ .../pojavlaunch/fragments/MainMenuFragment.java | 16 +++------------- .../java/net/kdt/pojavlaunch/utils/JREUtils.java | 6 +++++- 4 files changed, 28 insertions(+), 15 deletions(-) diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/ExitActivity.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/ExitActivity.java index d883fed84..f488f66c4 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/ExitActivity.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/ExitActivity.java @@ -1,7 +1,10 @@ package net.kdt.pojavlaunch; +import static net.kdt.pojavlaunch.Tools.shareLog; + import android.annotation.SuppressLint; import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; @@ -25,7 +28,7 @@ public class ExitActivity extends AppCompatActivity { new AlertDialog.Builder(this) .setMessage(getString(R.string.mcn_exit_title,code)) - .setPositiveButton(android.R.string.ok, null) + .setPositiveButton(R.string.main_share_logs, (dialog, which) -> shareLog(this)) .setOnDismissListener(dialog -> ExitActivity.this.finish()) .show(); } diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java index 782f3a404..510bf4d6d 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java @@ -22,6 +22,7 @@ import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.os.Environment; +import android.provider.DocumentsContract; import android.provider.OpenableColumns; import android.util.ArrayMap; import android.util.DisplayMetrics; @@ -967,4 +968,19 @@ public final class Tools { } return runtime; } + + /** Triggers the share intent chooser, with the latestlog file attached to it */ + public static void shareLog(Context context){ + Uri contentUri = DocumentsContract.buildDocumentUri(context.getString(R.string.storageProviderAuthorities), Tools.DIR_GAME_HOME + "/latestlog.txt"); + + Intent shareIntent = new Intent(); + shareIntent.setAction(Intent.ACTION_SEND); + shareIntent.putExtra(Intent.EXTRA_STREAM, contentUri); + shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); + shareIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + shareIntent.setType("text/plain"); + + Intent sendIntent = Intent.createChooser(shareIntent, "latestlog.txt"); + context.startActivity(sendIntent); + } } diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/MainMenuFragment.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/MainMenuFragment.java index ee2b77299..52dbeba07 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/MainMenuFragment.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/MainMenuFragment.java @@ -1,5 +1,7 @@ package net.kdt.pojavlaunch.fragments; +import static net.kdt.pojavlaunch.Tools.shareLog; + import android.content.Intent; import android.net.Uri; import android.os.Bundle; @@ -49,19 +51,7 @@ public class MainMenuFragment extends Fragment { mPlayButton.setOnClickListener(v -> ExtraCore.setValue(ExtraConstants.LAUNCH_GAME, true)); - mShareLogsButton.setOnClickListener((v) -> { - Uri contentUri = DocumentsContract.buildDocumentUri(getString(R.string.storageProviderAuthorities), Tools.DIR_GAME_HOME + "/latestlog.txt"); - - Intent shareIntent = new Intent(); - shareIntent.setAction(Intent.ACTION_SEND); - shareIntent.putExtra(Intent.EXTRA_STREAM, contentUri); - shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); - shareIntent.setType("text/plain"); - - Intent sendIntent = Intent.createChooser(shareIntent, "latestlog.txt"); - startActivity(sendIntent); - }); - + mShareLogsButton.setOnClickListener((v) -> shareLog(requireContext())); } private void runInstallerWithConfirmation(boolean isCustomArgs) { if (ProgressKeeper.getTaskCount() == 0) diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/JREUtils.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/JREUtils.java index 453bc77f8..be6524d55 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/JREUtils.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/JREUtils.java @@ -5,6 +5,7 @@ import static net.kdt.pojavlaunch.Architecture.is64BitsDevice; import static net.kdt.pojavlaunch.Tools.LOCAL_RENDERER; import static net.kdt.pojavlaunch.Tools.NATIVE_LIB_DIR; import static net.kdt.pojavlaunch.Tools.currentDisplayMetrics; +import static net.kdt.pojavlaunch.Tools.shareLog; import static net.kdt.pojavlaunch.prefs.LauncherPreferences.PREF_DUMP_SHADERS; import android.app.*; @@ -303,7 +304,10 @@ public class JREUtils { AlertDialog.Builder dialog = new AlertDialog.Builder(activity); dialog.setMessage(activity.getString(R.string.mcn_exit_title, exitCode)); - dialog.setPositiveButton(android.R.string.ok, (p1, p2) -> MainActivity.fullyExit()); + dialog.setPositiveButton(R.string.main_share_logs, (p1, p2) -> { + shareLog(activity); + MainActivity.fullyExit(); + }); dialog.show(); }); }