Android API >= 30:如果应用固定,则在双击后顶部栏始终可见

问题描述 投票:0回答:0

如果一个应用程序被固定(使用

startLockTask()
,例如。对于 kiosk 模式)并且使用
WindowInsetsController.hide
隐藏状态栏,如果用户从顶部滚动,状态栏将显示并且永远不会再次隐藏(它应该一秒钟后隐藏)。没有其他手势可以隐藏它。 对于 Android API >= 30,大多数设备(包括模拟器)都会出现此问题。

演示视频: https://www.youtube.com/watch?v=33pnOQBR9_I

最低密码:

public class MainActivity extends AppCompatActivity {
    private static final String TAG = "MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        startLockTask();
    }

    @Override
    public void onResume() {
        super.onResume();
        hideSystemUI();
    }

    private void hideSystemUI() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
            final Window window = getWindow();
            window.setDecorFitsSystemWindows(false);
            final WindowInsetsController insetsController = window.getInsetsController();
            insetsController.hide(WindowInsets.Type.statusBars() | WindowInsets.Type.navigationBars());
            insetsController.setSystemBarsBehavior(WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE);
        } else {
            Log.i(TAG, "Run on Android API >= 30!");
        }
    }
}

如何解决?

android kiosk-mode kiosk android-statusbar android-screen-pinning
© www.soinside.com 2019 - 2024. All rights reserved.