From d8cea17a8005b515fc5259ea6c67f7663df3f5f9 Mon Sep 17 00:00:00 2001 From: Howard Wu <40033067+Howard20181@users.noreply.github.com> Date: Wed, 1 Mar 2023 04:37:44 +0800 Subject: [PATCH] Add more hint for shortcut and notification (#2411) Co-authored-by: vvb2060 --- .../manager/ui/dialog/WelcomeDialog.java | 17 +++++++++----- .../manager/ui/fragment/SettingsFragment.java | 22 +++++++++++-------- .../lsposed/manager/util/ShortcutUtil.java | 6 ++--- app/src/main/res/values/strings.xml | 1 + app/src/main/res/xml/prefs.xml | 9 ++++---- 5 files changed, 33 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/org/lsposed/manager/ui/dialog/WelcomeDialog.java b/app/src/main/java/org/lsposed/manager/ui/dialog/WelcomeDialog.java index 82ab7b6c..43fa31c6 100644 --- a/app/src/main/java/org/lsposed/manager/ui/dialog/WelcomeDialog.java +++ b/app/src/main/java/org/lsposed/manager/ui/dialog/WelcomeDialog.java @@ -30,6 +30,7 @@ import androidx.fragment.app.FragmentManager; import org.lsposed.manager.App; import org.lsposed.manager.ConfigManager; import org.lsposed.manager.R; +import org.lsposed.manager.ui.fragment.HomeFragment; import org.lsposed.manager.util.ShortcutUtil; public class WelcomeDialog extends DialogFragment { @@ -43,12 +44,16 @@ public class WelcomeDialog extends DialogFragment { R.string.parasitic_welcome_summary_no_shortcut_support) .setNegativeButton(R.string.never_show, (dialog, which) -> App.getPreferences().edit().putBoolean("never_show_welcome", true).apply()) - .setPositiveButton(android.R.string.ok, null); - if (shortcutSupported) - builder.setNeutralButton(R.string.create_shortcut, (dialog, which) -> - ShortcutUtil.requestPinLaunchShortcut(() -> - App.getPreferences().edit().putBoolean("never_show_welcome", - true).apply())); + .setPositiveButton(android.R.string.ok, null) + .setNeutralButton(R.string.create_shortcut, (dialog, which) -> { + if (!ShortcutUtil.requestPinLaunchShortcut(() -> App.getPreferences().edit() + .putBoolean("never_show_welcome", true).apply())) { + var home = (HomeFragment) getParentFragment(); + if (home != null) { + home.showHint(R.string.settings_unsupported_pin_shortcut_summary, false); + } + } + }); return builder.create(); } diff --git a/app/src/main/java/org/lsposed/manager/ui/fragment/SettingsFragment.java b/app/src/main/java/org/lsposed/manager/ui/fragment/SettingsFragment.java index 42d81d9d..a4896456 100644 --- a/app/src/main/java/org/lsposed/manager/ui/fragment/SettingsFragment.java +++ b/app/src/main/java/org/lsposed/manager/ui/fragment/SettingsFragment.java @@ -163,19 +163,21 @@ public class SettingsFragment extends BaseFragment { if (App.isParasitic() && !ShortcutUtil.isLaunchShortcutPinned()) { var s = notification.getContext().getString(R.string.disable_status_notification_error); notification.setSummaryOn(notification.getSummary() + "\n" + s); - notification.setEnabled(false); - } else { - notification.setEnabled(installed); + if (ConfigManager.enableStatusNotification()) notification.setEnabled(false); } + notification.setVisible(installed); notification.setChecked(installed && ConfigManager.enableStatusNotification()); - notification.setOnPreferenceChangeListener((p, v) -> - ConfigManager.setEnableStatusNotification((boolean) v) - ); + notification.setOnPreferenceChangeListener((p, v) -> { + if ((boolean) v && App.isParasitic() && !ShortcutUtil.isLaunchShortcutPinned()) { + p.setEnabled(false); + } + return ConfigManager.setEnableStatusNotification((boolean) v); + }); } Preference shortcut = findPreference("add_shortcut"); if (shortcut != null) { - shortcut.setVisible(App.isParasitic() && ShortcutUtil.isRequestPinShortcutSupported(requireContext())); + shortcut.setVisible(App.isParasitic()); if (ShortcutUtil.isLaunchShortcutPinned()) { shortcut.setEnabled(false); shortcut.setSummary(R.string.settings_created_shortcut_summary); @@ -184,7 +186,7 @@ public class SettingsFragment extends BaseFragment { shortcut.setSummary(R.string.settings_create_shortcut_summary); } shortcut.setOnPreferenceClickListener(preference -> { - ShortcutUtil.requestPinLaunchShortcut(() -> { + if (!ShortcutUtil.requestPinLaunchShortcut(() -> { shortcut.setEnabled(false); shortcut.setSummary(R.string.settings_created_shortcut_summary); if (notification != null) { @@ -192,7 +194,9 @@ public class SettingsFragment extends BaseFragment { notification.setSummaryOn(R.string.settings_enable_status_notification_summary); } App.getPreferences().edit().putBoolean("never_show_welcome", true).apply(); - }); + })) { + parentFragment.showHint(R.string.settings_unsupported_pin_shortcut_summary, true); + } return true; }); } diff --git a/app/src/main/java/org/lsposed/manager/util/ShortcutUtil.java b/app/src/main/java/org/lsposed/manager/util/ShortcutUtil.java index 5708f8da..e6996750 100644 --- a/app/src/main/java/org/lsposed/manager/util/ShortcutUtil.java +++ b/app/src/main/java/org/lsposed/manager/util/ShortcutUtil.java @@ -149,12 +149,12 @@ public class ShortcutUtil { return sm.isRequestPinShortcutSupported(); } - public static void requestPinLaunchShortcut(Runnable afterPinned) { + public static boolean requestPinLaunchShortcut(Runnable afterPinned) { if (!App.isParasitic()) throw new RuntimeException(); var context = App.getInstance(); var sm = context.getSystemService(ShortcutManager.class); - if (!isRequestPinShortcutSupported(context)) return; - sm.requestPinShortcut(getShortcutBuilder(context).build(), + if (!sm.isRequestPinShortcutSupported()) return false; + return sm.requestPinShortcut(getShortcutBuilder(context).build(), registerReceiver(context, afterPinned)); } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 31462444..0d48ddb4 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -200,6 +200,7 @@ Help us translate %s into your language Create a shortcut that can open parasitic manager A shortcut has been created to open parasitic manager + The current default launcher does not support pin shortcuts Status Notification Show a notification that can open parasitic manager No shortcut, cannot disable notification diff --git a/app/src/main/res/xml/prefs.xml b/app/src/main/res/xml/prefs.xml index 673f874d..f7219288 100644 --- a/app/src/main/res/xml/prefs.xml +++ b/app/src/main/res/xml/prefs.xml @@ -88,16 +88,16 @@ android:icon="@drawable/ic_outline_assignment_24" android:key="disable_verbose_log" android:persistent="false" - android:title="@string/settings_disable_verbose_log" - android:summary="@string/settings_disable_verbose_log_summary"/> + android:summary="@string/settings_disable_verbose_log_summary" + android:title="@string/settings_disable_verbose_log" /> + android:summary="@string/settings_xposed_api_call_protection_summary" + android:title="@string/settings_xposed_api_call_protection" />