Add a switch to control adding shortcuts. (#1238)
* Add a switch to control adding shortcuts. * Hide Shortcut Setting if it is unavailable * Request a new shortcut when enabled
This commit is contained in:
parent
3486a6d004
commit
ec56d45492
|
|
@ -156,6 +156,25 @@ public class ConfigManager {
|
|||
}
|
||||
}
|
||||
|
||||
public static boolean isAddShortcut() {
|
||||
try {
|
||||
return LSPManagerServiceHolder.getService().isAddShortcut();
|
||||
} catch (RemoteException e) {
|
||||
Log.e(App.TAG, Log.getStackTraceString(e));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean setAddShortcut(boolean enabled) {
|
||||
try {
|
||||
LSPManagerServiceHolder.getService().setAddShortcut(enabled);
|
||||
return true;
|
||||
} catch (RemoteException e) {
|
||||
Log.e(App.TAG, Log.getStackTraceString(e));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isVerboseLogEnabled() {
|
||||
try {
|
||||
return LSPManagerServiceHolder.getService().isVerboseLog();
|
||||
|
|
|
|||
|
|
@ -160,6 +160,14 @@ public class SettingsFragment extends BaseFragment {
|
|||
prefEnableResources.setOnPreferenceChangeListener((preference, newValue) -> ConfigManager.setResourceHookEnabled((boolean) newValue));
|
||||
}
|
||||
|
||||
SwitchPreference prefEnableShortcut = findPreference("enable_auto_add_shortcut");
|
||||
if (prefEnableShortcut != null) {
|
||||
prefEnableShortcut.setEnabled(installed);
|
||||
prefEnableShortcut.setVisible(!App.isParasitic());
|
||||
prefEnableShortcut.setChecked(installed && ConfigManager.isAddShortcut());
|
||||
prefEnableShortcut.setOnPreferenceChangeListener((preference, newValue) -> ConfigManager.setAddShortcut((boolean) newValue));
|
||||
}
|
||||
|
||||
Preference backup = findPreference("backup");
|
||||
if (backup != null) {
|
||||
backup.setEnabled(installed);
|
||||
|
|
|
|||
|
|
@ -164,6 +164,8 @@
|
|||
<string name="settings_translation_contributors">翻译贡献者</string>
|
||||
<string name="settings_translation">参与翻译</string>
|
||||
<string name="settings_translation_summary">帮助我们把 %s 翻译到你的语言</string>
|
||||
<string name="pref_title_enable_auto_add_shortcut">自动新增快捷方式</string>
|
||||
<string name="settings_enable_auto_add_shortcut_summary">在非寄生的管理器中禁用后将不会新增快捷</string>
|
||||
<!-- Module Repo -->
|
||||
<string name="module_readme">自述文件</string>
|
||||
<string name="module_releases">版本</string>
|
||||
|
|
|
|||
|
|
@ -172,6 +172,8 @@
|
|||
<string name="settings_translation_contributors">Translation contributors</string>
|
||||
<string name="settings_translation">Participate in translation</string>
|
||||
<string name="settings_translation_summary">Help us translate %s into your language</string>
|
||||
<string name="pref_title_enable_auto_add_shortcut">Automatically add a shortcut</string>
|
||||
<string name="settings_enable_auto_add_shortcut_summary">No new shortcuts will be added when disabled in the non-parasitic manager</string>
|
||||
|
||||
<!-- Module Repo -->
|
||||
<string name="module_readme">Readme</string>
|
||||
|
|
|
|||
|
|
@ -35,8 +35,8 @@
|
|||
android:defaultValue="SYSTEM"
|
||||
android:entries="@array/language"
|
||||
android:icon="@drawable/ic_baseline_translate_24"
|
||||
android:summary="%s"
|
||||
android:key="language"
|
||||
android:summary="%s"
|
||||
android:title="@string/settings_language" />
|
||||
|
||||
<Preference
|
||||
|
|
@ -92,6 +92,13 @@
|
|||
android:key="disable_verbose_log"
|
||||
android:persistent="false"
|
||||
android:title="@string/pref_title_disable_verbose_log" />
|
||||
|
||||
<SwitchPreference
|
||||
android:defaultValue="false"
|
||||
android:key="enable_auto_add_shortcut"
|
||||
android:persistent="false"
|
||||
android:summary="@string/settings_enable_auto_add_shortcut_summary"
|
||||
android:title="@string/pref_title_enable_auto_add_shortcut" />
|
||||
</com.takisoft.preferencex.PreferenceCategory>
|
||||
|
||||
<com.takisoft.preferencex.PreferenceCategory
|
||||
|
|
|
|||
|
|
@ -36,8 +36,8 @@
|
|||
android:defaultValue="SYSTEM"
|
||||
android:entries="@array/language"
|
||||
android:icon="@drawable/ic_baseline_translate_24"
|
||||
android:summary="%s"
|
||||
android:key="language"
|
||||
android:summary="%s"
|
||||
android:title="@string/settings_language" />
|
||||
|
||||
<Preference
|
||||
|
|
@ -93,6 +93,13 @@
|
|||
android:key="disable_verbose_log"
|
||||
android:persistent="false"
|
||||
android:title="@string/pref_title_disable_verbose_log" />
|
||||
|
||||
<SwitchPreference
|
||||
android:defaultValue="false"
|
||||
android:key="enable_auto_add_shortcut"
|
||||
android:persistent="false"
|
||||
android:summary="@string/settings_enable_auto_add_shortcut_summary"
|
||||
android:title="@string/pref_title_enable_auto_add_shortcut" />
|
||||
</com.takisoft.preferencex.PreferenceCategory>
|
||||
|
||||
<com.takisoft.preferencex.PreferenceCategory
|
||||
|
|
|
|||
|
|
@ -83,6 +83,7 @@ public class ConfigManager {
|
|||
|
||||
private boolean resourceHook = false;
|
||||
private boolean verboseLog = true;
|
||||
private boolean autoAddShortcut = true;
|
||||
private String miscPath = null;
|
||||
|
||||
private int managerUid = -1;
|
||||
|
|
@ -211,6 +212,13 @@ public class ConfigManager {
|
|||
bool = config.get("enable_verbose_log");
|
||||
verboseLog = bool == null || (boolean) bool;
|
||||
|
||||
bool = config.get("enable_auto_add_shortcut");
|
||||
if (bool == null) {
|
||||
updateModulePrefs("lspd", 0, "config", "enable_auto_add_shortcut", true);
|
||||
bool = true;
|
||||
}
|
||||
autoAddShortcut = (boolean) bool;
|
||||
|
||||
// Don't migrate to ConfigFileManager, as XSharedPreferences will be restored soon
|
||||
String string = (String) config.get("misc_path");
|
||||
if (string == null) {
|
||||
|
|
@ -791,6 +799,15 @@ public class ConfigManager {
|
|||
verboseLog = on;
|
||||
}
|
||||
|
||||
public boolean isAddShortcut() {
|
||||
return autoAddShortcut;
|
||||
}
|
||||
|
||||
public void setAddShortcut(boolean on) {
|
||||
updateModulePrefs("lspd", 0, "config", "enable_auto_add_shortcut", on);
|
||||
this.autoAddShortcut = on;
|
||||
}
|
||||
|
||||
public boolean resourceHook() {
|
||||
return resourceHook;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -87,7 +87,6 @@ public class LSPManagerService extends ILSPManagerService.Stub {
|
|||
|
||||
private static final HandlerThread worker = new HandlerThread("manager worker");
|
||||
private static final Handler workerHandler;
|
||||
|
||||
private static Intent managerIntent = null;
|
||||
|
||||
static {
|
||||
|
|
@ -276,17 +275,16 @@ public class LSPManagerService extends ILSPManagerService.Stub {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
public static void createOrUpdateShortcut(boolean force) {
|
||||
workerHandler.post(() -> createOrUpdateShortcutInternal(force));
|
||||
workerHandler.post(() -> createOrUpdateShortcutInternal(force, true));
|
||||
}
|
||||
|
||||
private synchronized static void createOrUpdateShortcutInternal(boolean force) {
|
||||
public static void createOrUpdateShortcut(boolean force, boolean shouldCreate) {
|
||||
workerHandler.post(() -> createOrUpdateShortcutInternal(force, shouldCreate));
|
||||
}
|
||||
|
||||
private synchronized static void createOrUpdateShortcutInternal(boolean force, boolean shouldCreate) {
|
||||
try {
|
||||
if (!force && ConfigManager.getInstance().isManagerInstalled()) {
|
||||
Log.d(TAG, "Manager has installed, skip adding shortcut");
|
||||
return;
|
||||
}
|
||||
while (!UserService.isUserUnlocked(0)) {
|
||||
Log.d(TAG, "user is not yet unlocked, waiting for 1s...");
|
||||
Thread.sleep(1000);
|
||||
|
|
@ -316,9 +314,18 @@ public class LSPManagerService extends ILSPManagerService.Stub {
|
|||
return;
|
||||
}
|
||||
}
|
||||
|
||||
sm.requestPinShortcut(shortcut, null);
|
||||
Log.d(TAG, "done add shortcut");
|
||||
var configManager = ConfigManager.getInstance();
|
||||
if (!force && configManager.isManagerInstalled()) {
|
||||
Log.d(TAG, "Manager has installed, skip adding shortcut");
|
||||
return;
|
||||
}
|
||||
// Only existing shortcuts are updated when system settings
|
||||
// are changed and no new shortcuts are requested
|
||||
if (!force && !shouldCreate) return;
|
||||
if (configManager.isAddShortcut()) {
|
||||
sm.requestPinShortcut(shortcut, null);
|
||||
Log.d(TAG, "done add shortcut");
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
Log.e(TAG, "add shortcut", e);
|
||||
}
|
||||
|
|
@ -544,6 +551,17 @@ public class LSPManagerService extends ILSPManagerService.Stub {
|
|||
ConfigManager.getInstance().setResourceHook(enabled);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAddShortcut() {
|
||||
return ConfigManager.getInstance().isAddShortcut();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAddShortcut(boolean enabled) {
|
||||
ConfigManager.getInstance().setAddShortcut(enabled);
|
||||
if (enabled) createOrUpdateShortcut(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isVerboseLog() {
|
||||
return ConfigManager.getInstance().verboseLog();
|
||||
|
|
@ -683,5 +701,6 @@ public class LSPManagerService extends ILSPManagerService.Stub {
|
|||
@Override
|
||||
public void createShortcut() {
|
||||
createOrUpdateShortcut(true);
|
||||
setAddShortcut(true);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -180,7 +180,7 @@ public class LSPosedService extends ILSPosedService.Stub {
|
|||
synchronized public void dispatchConfigurationChanged(Intent intent) {
|
||||
try {
|
||||
ConfigFileManager.reloadConfiguration();
|
||||
LSPManagerService.createOrUpdateShortcut(false);
|
||||
LSPManagerService.createOrUpdateShortcut(false, false);
|
||||
} catch (Throwable e) {
|
||||
Log.e(TAG, "dispatch configuration changed", e);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -67,4 +67,8 @@ interface ILSPManagerService {
|
|||
void restartFor(in Intent intent) = 35;
|
||||
|
||||
void createShortcut() = 36;
|
||||
|
||||
boolean isAddShortcut() = 37;
|
||||
|
||||
void setAddShortcut(boolean enabled) = 38;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue