Add an option to manually create shortcut (#1571)
This commit is contained in:
parent
31e6246e6e
commit
05d93b85ec
|
|
@ -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));
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
Loading…
Reference in New Issue