如何修改在Screen Pinning Test中长按“返回”按钮取消固定屏幕?

本文介绍了一种屏锁取消方法的改进方案,通过修改系统代码,使用户可以通过长按返回键来解除屏幕锁定,而非原先需要同时长按返回键和概览键的方式。涉及的修改包括PhoneWindowManager.java文件中的逻辑调整及多个XML资源文件中的描述更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果TP按键区域不能同时上报两个事件,可以用单个键(如长按返回键)进行取消屏幕固定,请做如下修改:

1)frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
1、
   import android.app.UiModeManager;
+   import android.app.IActivityManager;

2、
    private static final int[] WINDOW_TYPES_WHERE_HOME_DOESNT_WORK = {
            WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
            WindowManager.LayoutParams.TYPE_SYSTEM_ERROR,
        };

+    private boolean longPressBackRecents() {
+        if (mContext.getResources()
+                .getBoolean(com.android.internal.R.bool.config_showNavigationBar)) {
+            return false;
+        }
+
+        try {
+            IActivityManager activityManager = ActivityManagerNative.getDefault();
+            if (activityManager.isInLockTaskMode()) {
+                activityManager.stopLockTaskModeOnCurrent();
+                return true;
+            }
+        } catch (Exception e) {
+            Log.d(TAG, "LongPressBackRecents Fail !", e);
+        }
+        return false;
+    }

3、
        } else if (keyCode == KeyEvent.KEYCODE_BACK) {
            if(mKeyguardDelegate != null && !mKeyguardDelegate.isShowing()) {
                mPowerManager.scheduleButtonLightTimeout(SystemClock.uptimeMillis());
            }
+            if ((event.getFlags() & KeyEvent.FLAG_LONG_PRESS) != 0) {
+                longPressBackRecents();
+            }
        /* @} */

2)frameworks/base/packages/SystemUI/res/values-zh-rCN/strings.xml(字串描述修改,请同时修改其他语言)
-  <string name="screen_pinning_description" msgid="1346522416878235405">"这将会固定显示此屏幕,直到您取消固定为止。触摸并同时按住“返回”和“概览”即可取消固定屏幕。"</string>
+  <string name="screen_pinning_description" msgid="1346522416878235405">"这将会固定显示此屏幕,直到您取消固定为止。长按“返回”键即可取消固定屏幕。"</string>

3)frameworks/base/packages/SystemUI/res/layout/screen_pinning_request_buttons.xml
    <FrameLayout
        android:id="@+id/screen_pinning_recents_group"
        ...........................................

        <ImageView
             ...........................................
-            android:src="@drawable/screen_pinning_light_bg_circ" />
+            android:src="@null" />

        <ImageView
            ............................................
            android:scaleType="matrix"
-            android:src="@drawable/screen_pinning_bg_circ" />
+            android:src="@null" />

4)frameworks/base/core/res/res/values-zh-rCN/strings.xml(字串描述修改,请同时修改其他语言)
-    <string name="lock_to_app_toast" msgid="7570091317001980053">"要取消固定此屏幕,请同时触摸并按住“返回”和“概览”按钮。"</string>
+    <string name="lock_to_app_toast" msgid="7570091317001980053">"要取消固定此屏幕,请长按“返回”键。"</string>
5)frameworks/base/core/res/res/values/config.xml(永久隐藏虚拟按键解锁)
-    <bool name="config_force_user_navigationbar">true</bool>
+    <bool name="config_force_user_navigationbar">false</bool>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值