如果一个应用程序被固定(使用
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!");
}
}
}
如何解决?