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 6461bf39..e136c7f1 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 @@ -45,6 +45,7 @@ import org.lsposed.manager.BuildConfig; import org.lsposed.manager.ConfigManager; import org.lsposed.manager.R; import org.lsposed.manager.databinding.FragmentSettingsBinding; +import org.lsposed.manager.receivers.LSPManagerServiceHolder; import org.lsposed.manager.ui.activity.MainActivity; import org.lsposed.manager.util.BackupUtils; import org.lsposed.manager.util.LangList; @@ -96,7 +97,7 @@ public class SettingsFragment extends BaseFragment { public static class PreferenceFragment extends PreferenceFragmentCompat { private SettingsFragment parentFragment; - ActivityResultLauncher backupLauncher = registerForActivityResult(new ActivityResultContracts.CreateDocument(), + ActivityResultLauncher backupLauncher = registerForActivityResult(new ActivityResultContracts.CreateDocument("application/gzip"), uri -> { if (uri == null || parentFragment == null) return; parentFragment.runAsync(() -> { @@ -158,6 +159,18 @@ public class SettingsFragment extends BaseFragment { prefEnableShortcut.setOnPreferenceChangeListener((preference, newValue) -> ConfigManager.setAddShortcut((boolean) newValue)); } + Preference shortcut = findPreference("add_shortcut"); + if (shortcut != null) { + shortcut.setEnabled(installed); + shortcut.setOnPreferenceClickListener(preference -> { + try { + LSPManagerServiceHolder.getService().createShortcut(); + } catch (Throwable ignored) { + } + return true; + }); + } + Preference backup = findPreference("backup"); if (backup != null) { backup.setEnabled(installed); @@ -293,8 +306,9 @@ public class SettingsFragment extends BaseFragment { } } + @NonNull @Override - public RecyclerView onCreateRecyclerView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) { + public RecyclerView onCreateRecyclerView(@NonNull LayoutInflater inflater, @NonNull ViewGroup parent, Bundle savedInstanceState) { BorderRecyclerView recyclerView = (BorderRecyclerView) super.onCreateRecyclerView(inflater, parent, savedInstanceState); RecyclerViewKt.fixEdgeEffect(recyclerView, false, true); recyclerView.getBorderViewDelegate().setBorderVisibilityChangedListener((top, oldTop, bottom, oldBottom) -> parentFragment.binding.appBar.setLifted(!top)); diff --git a/app/src/main/java/org/lsposed/manager/util/BackupUtils.java b/app/src/main/java/org/lsposed/manager/util/BackupUtils.java index bfc168f5..5b8734b2 100644 --- a/app/src/main/java/org/lsposed/manager/util/BackupUtils.java +++ b/app/src/main/java/org/lsposed/manager/util/BackupUtils.java @@ -47,6 +47,7 @@ public class BackupUtils { rootObject.put("version", VERSION); JSONArray modulesArray = new JSONArray(); var modules = ModuleUtil.getInstance().getModules(); + if (modules == null) return; for (ModuleUtil.InstalledModule module : modules.values()) { if (packageName != null && !module.packageName.equals(packageName)) { continue; diff --git a/app/src/main/res/drawable/ic_outline_app_shortcut_24.xml b/app/src/main/res/drawable/ic_outline_app_shortcut_24.xml new file mode 100644 index 00000000..26ef6246 --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_app_shortcut_24.xml @@ -0,0 +1,19 @@ + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5a40b245..573033df 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -65,7 +65,6 @@ LSPosed now supports system parasitization to avoid detection. You can safely uninstall the manager after successfully creating a shortcut of the parasitic manager. In any case you can install the manager back from /data/adb/lspd/manager.apk. Create shortcut Never show - Failed to create shortcut: %1$s Update LSPosed Confirm to update LSPosed? This device will reboot after update completion @@ -229,4 +228,5 @@ Feedback or suggestion Upgradable first Overview + Manually create parasitic manager shortcut diff --git a/app/src/main/res/xml/prefs.xml b/app/src/main/res/xml/prefs.xml index a660f218..dfa0d4c1 100644 --- a/app/src/main/res/xml/prefs.xml +++ b/app/src/main/res/xml/prefs.xml @@ -90,6 +90,12 @@ android:persistent="false" android:title="@string/pref_title_disable_verbose_log" /> + +