我经常看到答案是,这是不可能的。我认为谷歌不希望你这样做。但我正在建立一个自助服务终端应用程序。我知道这是可能的,因为这个应用程序这样做: https://play.google.com/store/apps/details?id=com.procoit.kioskbrowser
所以安装应用程序并打开它。如果向下滚动顶部的状态栏,它会显示状态栏但不会展开它。
我认为他们正在做一些hacky但我希望能够做到这一点。关于他们在做什么的任何想法?
答案 0 :(得分:0)
试试这个..为我工作..
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,windowManager.LayoutParams.FLAG_FULLSCREEN);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.about_app_phone);
}
答案 1 :(得分:0)
android的默认实现不支持禁用状态栏,在我的应用程序中我使用了反射来调用statusbarmanager。你也可以做同样的事情。
Object lStatusBarSvc = getSystemService("statusbar");
Class<?> lStatusbarManager = Class.forName("android.app.StatusBarManager");
Method collapse = lStatusbarManager.getMethod("collapse");
collapse.setAccessible(true);
collapse.invoke(lStatusBarSvc);
答案 2 :(得分:0)
我们无法阻止在kitkat设备中以全屏模式显示状态,因此制作了一个仍然符合要求的黑客攻击,即阻止状态栏扩展。
为此,该应用程序未全屏显示。我们在状态栏上放置了一个叠加层并消耗了所有输入事件。它阻止了地位的扩大。
<强> 注意:的强>
<强>更新强>
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
customViewGroup implementation 代码:
WindowManager manager = ((WindowManager) getApplicationContext()
.getSystemService(Context.WINDOW_SERVICE));
WindowManager.LayoutParams localLayoutParams = new WindowManager.LayoutParams();
localLayoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;
localLayoutParams.gravity = Gravity.TOP;
localLayoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE|
// this is to enable the notification to recieve touch events
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |
// Draws over status bar
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
localLayoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
localLayoutParams.height = (int) (50 * getResources()
.getDisplayMetrics().scaledDensity);
localLayoutParams.format = PixelFormat.TRANSPARENT;
customViewGroup view = new customViewGroup(this);
manager.addView(view, localLayoutParams);
希望这有助于你