Skip to content

Commit

Permalink
新增:通过不同区域进入引导式访问来决定是否跳转锁屏 (#553)
Browse files Browse the repository at this point in the history
  • Loading branch information
nxibjzC authored Apr 19, 2024
1 parent e0762ae commit 7777b38
Show file tree
Hide file tree
Showing 7 changed files with 39 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ public void onChange(boolean selfChange, @Nullable Uri uri, int flags) {
if (isLock) {
taskId = getLockApp(context);
XposedHelpers.callMethod(param.thisObject, "startSystemLockTaskMode", taskId);
needLockScreen = getMyLockScreen(context) == 1;
} else {
new Handler(context.getMainLooper()).postDelayed(() -> XposedHelpers.callMethod(param.thisObject, "stopSystemLockTaskMode"),300);
}
Expand All @@ -68,18 +69,6 @@ public void onChange(boolean selfChange, @Nullable Uri uri, int flags) {
context.getContentResolver().registerContentObserver(
Settings.Global.getUriFor("key_lock_app"),
false, contentObserver);

ContentObserver contentObserver1 = new ContentObserver(new Handler(context.getMainLooper())) {
@Override
public void onChange(boolean selfChange) {
needLockScreen = getMyLockScreen(context) == 1;
}
};
context.getContentResolver().registerContentObserver(
Settings.Global.getUriFor("exit_lock_app_screen"),
false, contentObserver1);
needLockScreen = getMyLockScreen(context) == 1;

isObserver = true;
}
} catch (Throwable e) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -131,16 +131,18 @@ public void onChange(boolean selfChange) {
@Override
protected void before(MethodHookParam param) {
MotionEvent motionEvent = (MotionEvent) param.args[0];
View view = (View)param.thisObject;
// logE(TAG, "mo: " + motionEvent.getActionMasked());
mContext = (Context) XposedHelpers.callMethod(param.thisObject, "getContext");
int action = motionEvent.getActionMasked();
int lockId = getLockApp(mContext);
setSystemLockApp(mContext);
setSystemLockScreen(mContext);
if (mPrefsMap.getBoolean("system_framework_guided_access_screen")) {
setMyLockScreen(mContext, 1);
} else {
setMyLockScreen(mContext, 0);
switch (mPrefsMap.getStringAsInt("system_framework_guided_access_screen_int",0)){
case 0-> setMyLockScreen(mContext, 0);
case 1-> setMyLockScreen(mContext, 1);
case 2-> setMyLockScreen(mContext, motionEvent.getRawX() < ((float) view.getWidth() / 2) ? 1 : 0);
case 3-> setMyLockScreen(mContext, motionEvent.getRawX() < ((float) view.getWidth() / 2) ? 0 : 1);
}
if (action == 2) { // 移动手指判定失效
count = count + 1;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@

import java.util.concurrent.ExecutorService;

import moralnorm.preference.DropDownPreference;
import moralnorm.preference.Preference;
import moralnorm.preference.SwitchPreference;

Expand All @@ -52,7 +53,7 @@ public class OtherSettings extends SettingsPreferenceFragment implements Prefere
SwitchPreference mDisableDeviceLog; // 关闭访问设备日志确认
SwitchPreference mLockApp;
SwitchPreference mLockAppSc;
SwitchPreference mLockAppScreen;
DropDownPreference mLockAppScreen;
SwitchPreference mLockAppStatus;
RecommendPreference mRecommend;
Handler handler;
Expand All @@ -72,7 +73,7 @@ public void initPrefs() {
mEntry = findPreference("prefs_key_system_framework_hook_entry");
mLockApp = findPreference("prefs_key_system_framework_guided_access");
mLockAppSc = findPreference("prefs_key_system_framework_guided_access_sc");
mLockAppScreen = findPreference("prefs_key_system_framework_guided_access_screen");
mLockAppScreen = findPreference("prefs_key_system_framework_guided_access_screen_int");
mLockAppStatus = findPreference("prefs_key_system_framework_guided_access_status");

mLockApp.setOnPreferenceChangeListener(this);
Expand Down Expand Up @@ -143,7 +144,7 @@ public boolean onPreferenceChange(@NonNull Preference preference, Object o) {
case "prefs_key_system_framework_guided_access_sc" -> {
initApp(executorService, () -> KillApp.killApps("com.miui.securitycenter"));
}
case "prefs_key_system_framework_guided_access_screen" -> {
case "prefs_key_system_framework_guided_access_screen_int" -> {
initApp(executorService, () -> KillApp.killApps("com.android.systemui"));
}
case "prefs_key_system_framework_guided_access_status" -> {
Expand Down
4 changes: 4 additions & 0 deletions app/src/main/res/values-zh-rCN/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -310,6 +310,10 @@

<string name="system_framework_other_rotation_button_3">强制启用</string>

<string name="guided_access_screen_area_full">始终触发</string>
<string name="guided_access_screen_area_left">左侧区域触发</string>
<string name="guided_access_screen_area_right">右侧区域触发</string>

<string name="security_center_flash_light_default">关闭</string>
<string name="security_center_flash_light_1">默认写入模式</string>
<string name="security_center_flash_light_2">写入模式一</string>
Expand Down
14 changes: 14 additions & 0 deletions app/src/main/res/values/arrays.xml
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,13 @@
<item>@string/system_framework_other_rotation_button_3</item>
</string-array>

<string-array name="guided_access_screen_area">
<item>@string/array_close</item>
<item>@string/guided_access_screen_area_full</item>
<item>@string/guided_access_screen_area_left</item>
<item>@string/guided_access_screen_area_right</item>
</string-array>

<string-array name="security_center_flash_light">
<item>@string/security_center_flash_light_default</item>
<item>@string/security_center_flash_light_1</item>
Expand Down Expand Up @@ -307,6 +314,13 @@
<item>2</item>
</string-array>

<string-array name="guided_access_screen_area_value">
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
</string-array>

<string-array name="security_center_flash_light_value">
<item>0</item>
<item>1</item>
Expand Down
3 changes: 3 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -315,6 +315,9 @@
<string name="control_center_sunshine_mode_one">System default mode</string>
<string name="control_center_sunshine_mode_two">Force maximum brightness</string>
<string name="system_framework_other_rotation_button_3">Forced</string>
<string name="guided_access_screen_area_full">Normal Enable</string>
<string name="guided_access_screen_area_left">Left side Enable</string>
<string name="guided_access_screen_area_right">Right side Enable</string>
<string name="security_center_flash_light_default">Close</string>
<string name="security_center_flash_light_1">Default write mode</string>
<string name="security_center_flash_light_2">Write mode one</string>
Expand Down
11 changes: 7 additions & 4 deletions app/src/main/res/xml/framework_other.xml
Original file line number Diff line number Diff line change
Expand Up @@ -80,11 +80,14 @@
android:dependency="prefs_key_system_framework_guided_access"
android:key="prefs_key_system_framework_guided_access_sc"
android:title="@string/system_framework_guided_access_sc" />
<SwitchPreference
android:defaultValue="false"
<DropDownPreference
android:defaultValue="0"
android:dependency="prefs_key_system_framework_guided_access"
android:key="prefs_key_system_framework_guided_access_screen"
android:title="@string/system_framework_guided_access_screen" />
android:key="prefs_key_system_framework_guided_access_screen_int"
android:title="@string/system_framework_guided_access_screen"
app:entries="@array/guided_access_screen_area"
app:entryValues="@array/guided_access_screen_area_value"
/>
<SwitchPreference
android:defaultValue="false"
android:dependency="prefs_key_system_framework_guided_access"
Expand Down

0 comments on commit 7777b38

Please sign in to comment.