Add an option to manually create shortcut (#1571)

This commit is contained in:
LoveSy 2022-01-28 14:34:53 +08:00 committed by GitHub
parent 31e6246e6e
commit 05d93b85ec
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 43 additions and 3 deletions

View File

@ -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<String> backupLauncher = registerForActivityResult(new ActivityResultContracts.CreateDocument(),
ActivityResultLauncher<String> 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));

View File

@ -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;

View File

@ -0,0 +1,19 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M17,18H7V6h10v1h2V3c0,-1.1 -0.9,-2 -2,-2H7C5.9,1 5,1.9 5,3v18c0,1.1 0.9,2 2,2h10c1.1,0 2,-0.9 2,-2v-4h-2V18zM7,3h10v1H7V3zM17,21H7v-1h10V21z"/>
<path
android:fillColor="@android:color/white"
android:pathData="M20.38,9.62l0.62,1.38l0.62,-1.38l1.38,-0.62l-1.38,-0.62l-0.62,-1.38l-0.62,1.38l-1.38,0.62z"/>
<path
android:fillColor="@android:color/white"
android:pathData="M16,8l-1.25,2.75l-2.75,1.25l2.75,1.25l1.25,2.75l1.25,-2.75l2.75,-1.25l-2.75,-1.25z"/>
<path
android:fillColor="@android:color/white"
android:pathData="M21,13l-0.62,1.38l-1.38,0.62l1.38,0.62l0.62,1.38l0.62,-1.38l1.38,-0.62l-1.38,-0.62z"/>
</vector>

View File

@ -65,7 +65,6 @@
<string name="parasitic_recommend_summary">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.</string>
<string name="create_shortcut">Create shortcut</string>
<string name="never_show">Never show</string>
<string name="failed_to_create_shortcut">Failed to create shortcut: %1$s</string>
<string name="update_lsposed">Update LSPosed</string>
<string name="update_lsposed_msg">Confirm to update LSPosed? This device will reboot after update completion</string>
@ -229,4 +228,5 @@
<string name="feedback_or_suggestion">Feedback or suggestion</string>
<string name="sort_upgradable_first">Upgradable first</string>
<string name="overview">Overview</string>
<string name="create_shortcut_summary">Manually create parasitic manager shortcut</string>
</resources>

View File

@ -90,6 +90,12 @@
android:persistent="false"
android:title="@string/pref_title_disable_verbose_log" />
<Preference
android:icon="@drawable/ic_outline_app_shortcut_24"
android:key="add_shortcut"
android:summary="@string/create_shortcut_summary"
android:title="@string/create_shortcut" />
<SwitchPreference
android:defaultValue="false"
android:icon="@drawable/ic_outline_add_to_home_screen_24"