在棒棒糖上隐藏系统 UI

2022-09-03 15:30:57

我有一个展台模式应用程序,它隐藏了系统UI(通知栏和导航按钮)的所有痕迹。在Android前棒棒糖的版本中,以下内容可以正常工作(作为root):

service call activity 42 s16 com.android.systemui

然而,在棒棒糖中,这使得屏幕完全变黑,并隐藏了系统UI。因此,它不能被使用。

有谁知道这个问题的解决方法吗?

我已经尝试了用于屏幕固定的设备所有者/管理员解决方案,但不幸的是,这是不可接受的,因为它不会完全隐藏系统UI,而是在从屏幕底部滑动时使后退按钮可见。


答案 1

如果设备已植根,则可以禁用systemui,然后设备所有者方法可以正常工作。pm disable-user com.android.systemui

如果设备运行其他应用,则不应使用此方法,因为如果您的应用崩溃,则 systemui 可能会被禁用,并且用户无法与设备交互。

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
&device-owner package="com.mycompany" name="*mycompany" />

答案 2

我已经使用设置以下设置来摆脱Android棉花糖中的系统UI

final int flags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
        | View.SYSTEM_UI_FLAG_FULLSCREEN
        | View.SYSTEM_UI_FLAG_IMMERSIVE;

和 OnCreate i have

this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_instructions);
getWindow().getDecorView().setSystemUiVisibility(flags);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);

然后,我添加了代码,以便在用户滑动顶部或底部屏幕时隐藏后退键。

/* Hides Navigation bar again if user swipes it visible */
@Override
protected void onResume() {
        getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(
                new View.OnSystemUiVisibilityChangeListener() {
                    @Override
                    public void onSystemUiVisibilityChange(int visibility) {
                    getWindow().getDecorView().setSystemUiVisibility(flags);
                    }
                });
    super.onResume();
    Log.i(TAG,"Activity Life Cycle : onResume : MainActivity Resumed");
}

这将在屏幕中短暂显示返回键并将其隐藏回去。唯一的问题是,如果你在固定活动之上打开新活动。它没有任何 onSume 指示。


推荐