diff --git a/app/src/main/java/org/lsposed/manager/App.java b/app/src/main/java/org/lsposed/manager/App.java index 99e8c1b9..5c23be86 100644 --- a/app/src/main/java/org/lsposed/manager/App.java +++ b/app/src/main/java/org/lsposed/manager/App.java @@ -90,7 +90,6 @@ public class App extends Application { private static App instance = null; private static OkHttpClient okHttpClient; private static Cache okHttpCache; - private static boolean parasiticShown = false; private SharedPreferences pref; private ExecutorService executorService; @@ -110,14 +109,6 @@ public class App extends Application { return !Process.isApplicationUid(Process.myUid()); } - public static boolean isParasiticShown() { - return parasiticShown; - } - - public static void setParasiticShown(boolean parasiticShown) { - App.parasiticShown = parasiticShown; - } - private void setCrashReport() { Thread.setDefaultUncaughtExceptionHandler((thread, throwable) -> { diff --git a/app/src/main/java/org/lsposed/manager/ui/dialog/ShortcutDialogBuilder.java b/app/src/main/java/org/lsposed/manager/ui/dialog/ShortcutDialogBuilder.java new file mode 100644 index 00000000..74c19e8f --- /dev/null +++ b/app/src/main/java/org/lsposed/manager/ui/dialog/ShortcutDialogBuilder.java @@ -0,0 +1,38 @@ +package org.lsposed.manager.ui.dialog; + +import android.content.Context; +import android.os.RemoteException; + +import androidx.annotation.NonNull; + +import org.lsposed.manager.App; +import org.lsposed.manager.ConfigManager; +import org.lsposed.manager.R; +import org.lsposed.manager.receivers.LSPManagerServiceHolder; + +public class ShortcutDialogBuilder extends BlurBehindDialogBuilder { + private static boolean shown = false; + + private ShortcutDialogBuilder(@NonNull Context context) { + super(context); + setTitle(R.string.parasitic_recommend); + setMessage(R.string.parasitic_recommend_summary); + setNegativeButton(R.string.never_show, (dialog, which) -> + App.getPreferences().edit().putBoolean("never_show_shortcut", true).apply()); + setNeutralButton(R.string.create_shortcut, (dialog, which) -> { + try { + LSPManagerServiceHolder.getService().createShortcut(); + } catch (RemoteException ignored) { + } + }); + setPositiveButton(android.R.string.ok, null); + } + + public static void showIfNeed(@NonNull Context context) { + if (App.isParasitic() || !ConfigManager.isBinderAlive()) return; + if (App.getPreferences().getBoolean("never_show_shortcut", false)) return; + if (shown) return; + shown = true; + new ShortcutDialogBuilder(context).show(); + } +} diff --git a/app/src/main/java/org/lsposed/manager/ui/fragment/HomeFragment.java b/app/src/main/java/org/lsposed/manager/ui/fragment/HomeFragment.java index 8f181a4c..92d751b7 100644 --- a/app/src/main/java/org/lsposed/manager/ui/fragment/HomeFragment.java +++ b/app/src/main/java/org/lsposed/manager/ui/fragment/HomeFragment.java @@ -35,16 +35,15 @@ import androidx.core.text.HtmlCompat; import com.google.android.material.color.MaterialColors; import com.google.android.material.snackbar.Snackbar; -import org.lsposed.manager.App; import org.lsposed.manager.BuildConfig; import org.lsposed.manager.ConfigManager; import org.lsposed.manager.R; import org.lsposed.manager.databinding.DialogAboutBinding; import org.lsposed.manager.databinding.FragmentHomeBinding; -import org.lsposed.manager.receivers.LSPManagerServiceHolder; import org.lsposed.manager.ui.dialog.BlurBehindDialogBuilder; import org.lsposed.manager.ui.dialog.FlashDialogBuilder; import org.lsposed.manager.ui.dialog.InfoDialogBuilder; +import org.lsposed.manager.ui.dialog.ShortcutDialogBuilder; import org.lsposed.manager.ui.dialog.WarningDialogBuilder; import org.lsposed.manager.util.ModuleUtil; import org.lsposed.manager.util.NavUtil; @@ -62,25 +61,7 @@ public class HomeFragment extends BaseFragment { @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); - - if (!App.isParasitic() && !App.getPreferences().getBoolean("never_show_shortcut", false) && !App.isParasiticShown() && ConfigManager.isBinderAlive()) { - App.setParasiticShown(true); - new BlurBehindDialogBuilder(requireActivity()) - .setTitle(R.string.parasitic_recommend) - .setMessage(R.string.parasitic_recommend_summary) - .setNegativeButton(R.string.never_show, (dialog, which) -> App.getPreferences().edit().putBoolean("never_show_shortcut", true).apply()) - .setNeutralButton(R.string.create_shortcut, (dialog, which) -> { - try { - LSPManagerServiceHolder.getService().createShortcut(); - } catch (Throwable e) { - if (binding != null) { - Snackbar.make(binding.snackbar, getString(R.string.failed_to_create_shortcut, e.getMessage()), Snackbar.LENGTH_LONG).show(); - } - } - }) - .setPositiveButton(android.R.string.ok, null) - .show(); - } + ShortcutDialogBuilder.showIfNeed(requireContext()); } @Override