隐藏棒棒糖上的系统界面

我有一个自助服务terminal模式应用程序,它隐藏了系统UI(通知栏和导航button)的所有痕迹。 在Android之前棒棒糖的版本中,以下工作正常(以root身份):

service call activity 42 s16 com.android.systemui 

然而,在棒棒糖中,这使得屏幕完全黑屏以及隐藏系统UI。 因为这个原因它不能使用。

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

我已经尝试了屏幕固定的设备所有者/pipe理员解决scheme,但是不幸的是,这是不可接受的,因为它不会完全隐藏系统UI,但是在屏幕底部滑动时可以看到后退button。

Solutions Collecting From Web of "隐藏棒棒糖上的系统界面"

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

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

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

我使用了下面的设置来摆脱Android Marshmallow中的系统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我有

 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"); } 

这将在屏幕上短暂显示,并将其隐藏起来。 唯一的问题是,如果你在固定的活动之上打开新的活动。 它没有得到任何onResume指示。

你可能想使用“沉浸模式”。 你会在这里find所有需要的信息

你有一个例子,对于Android的每个版本!

我有同样的问题。 此代码将适用于4.4和棒棒糖(testing)。 还应该在其他版本上工作。

  /** * Uses Root access to enable and disable SystemUI. * @param enabled Decide whether to enable or disable. */ public void setSystemUIEnabled(boolean enabled){ try { Process p = Runtime.getRuntime().exec("su"); DataOutputStream os = new DataOutputStream(p.getOutputStream()); os.writeBytes("pm " + (enabled ? "enable" : "disable") + " com.android.systemui\n"); os.writeBytes("exit\n"); os.flush(); } catch (IOException e) { e.printStackTrace(); } } 

当然它需要根

我发现这个其他的解决scheme,它是在Android 5.0的作品

 private void hideNavigationBar(){ try { Process process = Runtime.getRuntime().exec("su"); DataOutputStream os = new DataOutputStream(process.getOutputStream()); os.writeBytes("pm disable com.android.systemui\n"); os.flush(); os.writeBytes("exit\n"); os.flush(); process.waitFor(); ////////////////////////////////////// } catch (InterruptedException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }