Skip to content

Commit ffc4047

Browse files
committed
refactor: 重构引导式访问
- 使用官方固定应用逻辑 - 增强体验,退出逻辑固定为长按电源键 - 在固定应用期间加强对状态栏、导航栏的屏蔽,避免误触 - 固定应用入口除官方原有入口之外,新增磁贴开启方式 HyperOS 3 Android 15 暂未验证可用性,需自测
1 parent 8b87d43 commit ffc4047

24 files changed

Lines changed: 820 additions & 716 deletions

File tree

library/core/src/main/java/com/sevtinge/hyperceiler/hooker/framework/OtherSettings.java

Lines changed: 2 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
*/
1919
package com.sevtinge.hyperceiler.hooker.framework;
2020

21-
import static com.sevtinge.hyperceiler.libhook.utils.api.DeviceHelper.System.isMoreAndroidVersion;
2221
import static com.sevtinge.hyperceiler.sub.SubPickerActivity.APP_OPEN_MODE;
2322
import static com.sevtinge.hyperceiler.sub.SubPickerActivity.LAUNCHER_MODE;
2423
import static com.sevtinge.hyperceiler.sub.SubPickerActivity.PROCESS_TEXT_MODE;
@@ -27,33 +26,22 @@
2726
import android.os.Bundle;
2827
import android.os.Handler;
2928

30-
import androidx.annotation.NonNull;
3129
import androidx.preference.Preference;
3230
import androidx.preference.SwitchPreference;
3331

34-
import com.sevtinge.hyperceiler.prefs.RecommendPreference;
3532
import com.sevtinge.hyperceiler.core.R;
3633
import com.sevtinge.hyperceiler.dashboard.DashboardFragment;
37-
import com.sevtinge.hyperceiler.libhook.utils.api.ThreadPoolManager;
38-
import com.sevtinge.hyperceiler.libhook.utils.hookapi.tool.AppsTool;
34+
import com.sevtinge.hyperceiler.prefs.RecommendPreference;
3935
import com.sevtinge.hyperceiler.sub.SubPickerActivity;
4036

41-
import java.util.concurrent.ExecutorService;
42-
43-
import fan.preference.DropDownPreference;
44-
45-
public class OtherSettings extends DashboardFragment implements Preference.OnPreferenceChangeListener {
37+
public class OtherSettings extends DashboardFragment {
4638

4739
Preference mCleanShareApps;
4840
Preference mCleanOpenApps;
4941
Preference mCleanProcessTextApps;
5042
Preference mAutoStart;
5143
Preference mClipboardWhitelistApps;
5244
SwitchPreference mVerifyDisable;
53-
SwitchPreference mLockApp;
54-
SwitchPreference mLockAppSc;
55-
DropDownPreference mLockAppScreen;
56-
SwitchPreference mLockAppStatus;
5745
RecommendPreference mRecommend;
5846
Handler handler;
5947

@@ -70,19 +58,6 @@ public void initPrefs() {
7058
mAutoStart = findPreference("prefs_key_system_framework_auto_start_apps");
7159
mClipboardWhitelistApps = findPreference("prefs_key_system_framework_clipboard_whitelist_apps");
7260
mVerifyDisable = findPreference("prefs_key_system_framework_disable_verify_can_ve_disabled");
73-
mLockApp = findPreference("prefs_key_system_framework_guided_access");
74-
mLockAppSc = findPreference("prefs_key_system_framework_guided_access_sc");
75-
mLockAppScreen = findPreference("prefs_key_system_framework_guided_access_screen_int");
76-
mLockAppStatus = findPreference("prefs_key_system_framework_guided_access_status");
77-
78-
if (isMoreAndroidVersion(36)) {
79-
setFuncHint(mLockApp, 2);
80-
} else {
81-
mLockApp.setOnPreferenceChangeListener(this);
82-
mLockAppSc.setOnPreferenceChangeListener(this);
83-
mLockAppScreen.setOnPreferenceChangeListener(this);
84-
mLockAppStatus.setOnPreferenceChangeListener(this);
85-
}
8661

8762
mAutoStart.setOnPreferenceClickListener(preference -> {
8863
Intent intent = new Intent(getActivity(), SubPickerActivity.class);
@@ -137,22 +112,4 @@ public void initPrefs() {
137112
R.string.system_framework_display_title
138113
);
139114
}
140-
141-
public void initApp(ExecutorService executorService, Runnable runnable) {
142-
executorService.submit(() -> {
143-
handler.post(runnable);
144-
});
145-
}
146-
147-
@Override
148-
public boolean onPreferenceChange(@NonNull Preference preference, Object o) {
149-
ExecutorService executorService = ThreadPoolManager.getInstance();
150-
switch (preference.getKey()) {
151-
case "prefs_key_system_framework_guided_access",
152-
"prefs_key_system_framework_guided_access_status" -> initApp(executorService, () -> AppsTool.killApps("com.miui.home", "com.android.systemui"));
153-
case "prefs_key_system_framework_guided_access_sc" -> initApp(executorService, () -> AppsTool.killApps("com.miui.securitycenter"));
154-
case "prefs_key_system_framework_guided_access_screen_int" -> initApp(executorService, () -> AppsTool.killApps("com.android.systemui"));
155-
}
156-
return true;
157-
}
158115
}

library/core/src/main/res/xml/framework_other.xml

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -83,18 +83,11 @@
8383
android:title="@string/system_framework_guided_access" />
8484

8585
<SwitchPreference
86-
android:defaultValue="false"
87-
android:dependency="prefs_key_system_framework_guided_access"
88-
android:key="prefs_key_system_framework_guided_access_sc"
89-
android:title="@string/system_framework_guided_access_sc" />
90-
91-
<fan.preference.DropDownPreference
92-
android:defaultValue="0"
86+
android:defaultValue="true"
9387
android:dependency="prefs_key_system_framework_guided_access"
94-
android:key="prefs_key_system_framework_guided_access_screen_int"
95-
android:title="@string/system_framework_guided_access_screen"
96-
app:entries="@array/guided_access_screen_area"
97-
app:entryValues="@array/guided_access_screen_area_value" />
88+
android:key="prefs_key_system_framework_guided_access_tile"
89+
android:summary="@string/system_framework_guided_access_tile_more"
90+
android:title="@string/system_framework_guided_access_tile" />
9891

9992
<SwitchPreference
10093
android:defaultValue="false"
@@ -103,6 +96,13 @@
10396
android:summary="@string/system_framework_guided_access_status_more"
10497
android:title="@string/system_framework_guided_access_status" />
10598

99+
<SwitchPreference
100+
android:defaultValue="false"
101+
android:dependency="prefs_key_system_framework_guided_access"
102+
android:key="prefs_key_system_framework_guided_access_exit_lockscreen"
103+
android:summary="@string/system_framework_guided_access_exit_lockscreen_more"
104+
android:title="@string/system_framework_guided_access_exit_lockscreen" />
105+
106106
<SwitchPreference
107107
android:defaultValue="false"
108108
android:key="prefs_key_system_other_delete_on_post_notification"
@@ -267,4 +267,4 @@
267267
android:title="@string/system_framework_auto_start_apps" />
268268

269269
</PreferenceCategory>
270-
</PreferenceScreen>
270+
</PreferenceScreen>

library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/app/Home/os2/HomePadOld.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import com.sevtinge.hyperceiler.libhook.rules.home.DisablePrestart;
2626
import com.sevtinge.hyperceiler.libhook.rules.home.FreeFormCountForHome;
2727
import com.sevtinge.hyperceiler.libhook.rules.home.HomePortraitReverse;
28-
import com.sevtinge.hyperceiler.libhook.rules.home.LockApp;
2928
import com.sevtinge.hyperceiler.libhook.rules.home.MaxFreeForm;
3029
import com.sevtinge.hyperceiler.libhook.rules.home.ScreenSwipe;
3130
import com.sevtinge.hyperceiler.libhook.rules.home.SeekPoints;
@@ -252,7 +251,6 @@ public void onPackageLoaded() {
252251
initHook(HideDock.INSTANCE, PrefsBridge.getBoolean("home_dock_hide_dock"));
253252

254253
// 其他
255-
initHook(new LockApp(), PrefsBridge.getBoolean("system_framework_guided_access"));
256254
initHook(new HomeMode(), PrefsBridge.getStringAsInt("home_other_home_mode", 0) > 0);
257255
initHook(new InfiniteScroll(), PrefsBridge.getBoolean("home_other_infinite_scroll"));
258256
initHook(new FreeformShortcutMenu(), PrefsBridge.getBoolean("home_other_tasks_shortcut_menu"));

library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/app/Home/os2/HomePhoneOld.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import com.sevtinge.hyperceiler.libhook.rules.home.DisablePrestart;
2626
import com.sevtinge.hyperceiler.libhook.rules.home.FreeFormCountForHome;
2727
import com.sevtinge.hyperceiler.libhook.rules.home.HomePortraitReverse;
28-
import com.sevtinge.hyperceiler.libhook.rules.home.LockApp;
2928
import com.sevtinge.hyperceiler.libhook.rules.home.MaxFreeForm;
3029
import com.sevtinge.hyperceiler.libhook.rules.home.ScreenSwipe;
3130
import com.sevtinge.hyperceiler.libhook.rules.home.SeekPoints;
@@ -264,7 +263,6 @@ public void onPackageLoaded() {
264263
initHook(HideDock.INSTANCE, PrefsBridge.getBoolean("home_dock_hide_dock"));
265264

266265
// 其他
267-
initHook(new LockApp(), PrefsBridge.getBoolean("system_framework_guided_access"));
268266
initHook(new HomeMode(), PrefsBridge.getStringAsInt("home_other_home_mode", 0) > 0);
269267
initHook(new InfiniteScroll(), PrefsBridge.getBoolean("home_other_infinite_scroll"));
270268
initHook(new FreeformShortcutMenu(), (PrefsBridge.getBoolean("home_other_freeform_shortcut_menu") || (PrefsBridge.getBoolean("home_other_tasks_shortcut_menu"))));

library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/app/SecurityCenter.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
import com.sevtinge.hyperceiler.libhook.rules.securitycenter.PowerSaver;
3636
import com.sevtinge.hyperceiler.libhook.rules.securitycenter.RemoveConversationBubbleSettingsRestriction;
3737
import com.sevtinge.hyperceiler.libhook.rules.securitycenter.RemoveOpenAppConfirmationPopup;
38-
import com.sevtinge.hyperceiler.libhook.rules.securitycenter.ScLockApp;
3938
import com.sevtinge.hyperceiler.libhook.rules.securitycenter.SidebarLineCustom;
4039
import com.sevtinge.hyperceiler.libhook.rules.securitycenter.UnlockCarSicknessRelief;
4140
import com.sevtinge.hyperceiler.libhook.rules.securitycenter.app.AddAppInfoEntry;
@@ -148,7 +147,6 @@ public void onPackageLoaded() {
148147
initHook(new NewBoxBlur(), PrefsBridge.getBoolean("security_center_newbox_custom_enable"));
149148
initHook(BlurSecurity.INSTANCE, PrefsBridge.getBoolean("se_enable"));
150149
initHook(SidebarLineCustom.INSTANCE, PrefsBridge.getBoolean("security_center_sidebar_line_color"));
151-
initHook(new ScLockApp(), PrefsBridge.getBoolean("system_framework_guided_access_sc"));
152150
initHook(new RemoveMacroBlackList(), PrefsBridge.getBoolean("security_center_remove_macro_black_list"));
153151
initHook(RemoveGameToast.INSTANCE, PrefsBridge.getBoolean("security_center_remove_game_toast"));
154152
initHook(UnlockGunService.INSTANCE, PrefsBridge.getBoolean("security_center_unlock_gun_service"));

library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/app/SystemFramework/SystemFrameworkB.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@
7575
import com.sevtinge.hyperceiler.libhook.rules.systemframework.others.QuickScreenshot;
7676
import com.sevtinge.hyperceiler.libhook.rules.systemframework.others.ScreenRotation;
7777
import com.sevtinge.hyperceiler.libhook.rules.systemframework.others.SpeedInstall;
78+
import com.sevtinge.hyperceiler.libhook.rules.systemframework.others.SystemLockApp;
7879
import com.sevtinge.hyperceiler.libhook.rules.systemframework.others.ThermalBrightness;
7980
import com.sevtinge.hyperceiler.libhook.rules.systemframework.others.UseAndroidPackageInstaller;
8081
import com.sevtinge.hyperceiler.libhook.rules.systemframework.volume.VolumeDefaultStream;
@@ -141,6 +142,7 @@ public void onPackageLoaded() {
141142
initHook(new LinkTurboToast(), PrefsBridge.getBoolean("system_framework_disable_link_turbo_toast"));
142143
initHook(new AllowUntrustedTouchForU(), PrefsBridge.getBoolean("system_framework_allow_untrusted_touch"));
143144
initHook(DeleteOnPostNotification.INSTANCE, PrefsBridge.getBoolean("system_other_delete_on_post_notification"));
145+
initHook(new SystemLockApp(), PrefsBridge.getBoolean("system_framework_guided_access"));
144146
initHook(new AllowManageAllNotifications(), PrefsBridge.getBoolean("system_framework_allow_manage_all_notifications"));
145147

146148
// 其它-底层

library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/app/SystemUI/SystemUIB.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
import com.sevtinge.hyperceiler.libhook.rules.systemui.controlcenter.tiles.FiveGTile;
5151
import com.sevtinge.hyperceiler.libhook.rules.systemui.controlcenter.tiles.FixTilesList;
5252
import com.sevtinge.hyperceiler.libhook.rules.systemui.controlcenter.tiles.GmsTile;
53+
import com.sevtinge.hyperceiler.libhook.rules.systemui.controlcenter.tiles.GuidedAccessTile;
5354
import com.sevtinge.hyperceiler.libhook.rules.systemui.controlcenter.tiles.NewFlashLight;
5455
import com.sevtinge.hyperceiler.libhook.rules.systemui.controlcenter.tiles.ReduceBrightColorsTile;
5556
import com.sevtinge.hyperceiler.libhook.rules.systemui.controlcenter.tiles.SnowLeopardModeTile;
@@ -72,6 +73,7 @@
7273
import com.sevtinge.hyperceiler.libhook.rules.systemui.other.MonetThemeOverlay;
7374
import com.sevtinge.hyperceiler.libhook.rules.systemui.other.NotificationFreeform;
7475
import com.sevtinge.hyperceiler.libhook.rules.systemui.other.RemoveMiuiMultiWinSwitch;
76+
import com.sevtinge.hyperceiler.libhook.rules.systemui.other.UiLockApp;
7577
import com.sevtinge.hyperceiler.libhook.rules.systemui.other.UnlockClipboard;
7678
import com.sevtinge.hyperceiler.libhook.rules.systemui.plugin.NewPluginHelperKt;
7779
import com.sevtinge.hyperceiler.libhook.rules.systemui.plugin.systemui.QSColor;
@@ -190,6 +192,9 @@ public void onPackageLoaded() {
190192
initHook(new SnowLeopardModeTile(), PrefsBridge.getBoolean("system_ui_control_center_snow_leopard_mode"));
191193
initHook(new GmsTile(), PrefsBridge.getBoolean("security_center_gms_open"));
192194
initHook(new ReduceBrightColorsTile(), PrefsBridge.getBoolean("security_center_reduce_bright_colors_tile"));
195+
initHook(new GuidedAccessTile(),
196+
PrefsBridge.getBoolean("system_framework_guided_access")
197+
&& PrefsBridge.getBoolean("system_framework_guided_access_tile", true));
193198
initHook(NewFlashLight.INSTANCE, PrefsBridge.getStringAsInt("security_flash_light_switch", 0) != 0);
194199
initHook(new SunlightModeTile(),
195200
PrefsBridge.getStringAsInt("system_control_center_sunshine_new_mode_high", 0) != 0 ||
@@ -222,6 +227,7 @@ public void onPackageLoaded() {
222227
initHook(RemoveMiuiMultiWinSwitch.INSTANCE, PrefsBridge.getBoolean("system_ui_remove_miui_multi_win_switch"));
223228
initHook(DisableBottomBar.INSTANCE, PrefsBridge.getBoolean("system_ui_disable_bottombar"));
224229
initHook(UnlockClipboard.INSTANCE, PrefsBridge.getBoolean("system_ui_unlock_clipboard"));
230+
initHook(new UiLockApp(), PrefsBridge.getBoolean("system_framework_guided_access") && PrefsBridge.getBoolean("system_framework_guided_access_status"));
225231

226232
initHook(new VolumeMediaSteps(), PrefsBridge.getBoolean("system_framework_volume_media_steps_enable"));
227233
if (PrefsBridge.getBoolean("misound_bluetooth")) {

library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/app/SystemUI/SystemUIV.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
import com.sevtinge.hyperceiler.libhook.rules.systemui.controlcenter.tiles.FiveGTile;
6262
import com.sevtinge.hyperceiler.libhook.rules.systemui.controlcenter.tiles.FixTilesList;
6363
import com.sevtinge.hyperceiler.libhook.rules.systemui.controlcenter.tiles.GmsTile;
64+
import com.sevtinge.hyperceiler.libhook.rules.systemui.controlcenter.tiles.GuidedAccessTile;
6465
import com.sevtinge.hyperceiler.libhook.rules.systemui.controlcenter.tiles.NewFlashLight;
6566
import com.sevtinge.hyperceiler.libhook.rules.systemui.controlcenter.tiles.ReduceBrightColorsTile;
6667
import com.sevtinge.hyperceiler.libhook.rules.systemui.controlcenter.tiles.SnowLeopardModeTile;
@@ -223,6 +224,9 @@ public void onPackageLoaded() {
223224
initHook(new GmsTile(), PrefsBridge.getBoolean("security_center_gms_open"));
224225
initHook(new TaplusTile(), PrefsBridge.getBoolean("security_center_taplus"));
225226
initHook(new ReduceBrightColorsTile(), PrefsBridge.getBoolean("security_center_reduce_bright_colors_tile"));
227+
initHook(new GuidedAccessTile(),
228+
PrefsBridge.getBoolean("system_framework_guided_access")
229+
&& PrefsBridge.getBoolean("system_framework_guided_access_tile", true));
226230
initHook(new SnowLeopardModeTile(), PrefsBridge.getBoolean("system_ui_control_center_snow_leopard_mode"));
227231
initHook(NewFlashLight.INSTANCE, PrefsBridge.getStringAsInt("security_flash_light_switch", 0) != 0);
228232
initHook(new SunlightModeTile(),
@@ -263,7 +267,7 @@ public void onPackageLoaded() {
263267
initHook(DoubleTapToSleep.INSTANCE, PrefsBridge.getBoolean("system_ui_status_bar_double_tap_to_sleep"));
264268
initHook(new HideStatusBarBeforeScreenshot(), PrefsBridge.getBoolean("system_ui_status_bar_hide_icon"));
265269

266-
initHook(new UiLockApp(), PrefsBridge.getBoolean("system_framework_guided_access"));
270+
initHook(new UiLockApp(), PrefsBridge.getBoolean("system_framework_guided_access") && PrefsBridge.getBoolean("system_framework_guided_access_status"));
267271
initHook(new AllowManageAllNotifications(), PrefsBridge.getBoolean("system_framework_allow_manage_all_notifications"));
268272
initHook(new MonetThemeOverlay(), PrefsBridge.getBoolean("system_ui_monet_overlay_custom"));
269273
initHook(new BrightnessPct(), PrefsBridge.getBoolean("system_showpct_title"));
@@ -320,4 +324,3 @@ private void isPadLoaded() {
320324
initHook(DisableInfinitymodeGesture.INSTANCE, PrefsBridge.getBoolean("system_ui_disable_infinitymode_gesture"));
321325
}
322326
}
323-

0 commit comments

Comments
 (0)