How to open or expand status bar through intent?
我正在制作家庭应用程序,我认为如果我使用全屏模式而不显示状态栏,这将是合适的。因此,现在我希望能够使用菜单上的按钮打开或展开状态栏,类似于菜单中某些默认家庭应用程序的方式。我知道它是可能的,因为默认的首页可以做到这一点。这是通过意图完成的吗?如果可以,我可以得到它的代码。如果不好的话,如果你们向我展示了如何,我将不胜感激。谢谢!
看看是否有帮助,让我知道...
1 2 3 4 5 6 7 8 9 10 11 12 13 | try{ Object service = getSystemService("statusbar"); Class< ? > statusbarManager = Class.forName("android.app.StatusBarManager"); Method expand = statusbarManager.getMethod("expand"); expand.invoke(service); } catch(Exception ex){ .... } uses permission :"android.permission.EXPAND_STATUS_BAR"; |
以下代码对我有用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | boolean shown = true; private void showHide() { Window w = this.getWindow(); if(shown) { w.setFlags(0, WindowManager.LayoutParams.FLAG_FULLSCREEN); } else { w.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); } shown=!shown; } |
这个为我工作:
清单:
1 | <uses-permission android:name="android.permission.EXPAND_STATUS_BAR"/> |
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | // https://gist.github.com/XinyueZ/7bad2c02be425b350b7f requires permission:"android.permission.EXPAND_STATUS_BAR" @SuppressLint("WrongConstant","PrivateApi") @JvmStatic fun setExpandNotificationDrawer(context: Context, expand: Boolean) { try { val statusBarService = context.getSystemService("statusbar") val methodName = if (expand) if (Build.VERSION.SDK_INT >= 17)"expandNotificationsPanel" else"expand" else if (Build.VERSION.SDK_INT >= 17)"collapsePanels" else"collapse" val statusBarManager: Class<*> = Class.forName("android.app.StatusBarManager") val method: Method = statusBarManager.getMethod(methodName) method.invoke(statusBarService) } catch (e: Exception) { e.printStackTrace() } } |
但是,有人写了它不适用于所有设备和Android版本(在这里),所以我在这里写了一个要求为此添加官方API的请求。