Как открыть или расширить строку состояния через намерение?

Я делаю домашнее приложение и думаю, что оно подойдет, если я использую полноэкранный режим, а не показываю строку состояния. Итак, теперь я хочу иметь возможность открывать или расширять строку состояния с помощью кнопки в меню, подобно тому, как это делают некоторые стандартные домашние приложения в меню. Я знаю, что это возможно, так как по умолчанию это делает дом. Это сделано через намерение? Если так, я могу иметь код для этого. Если не хорошо, то я был бы признателен, если бы вы, ребята, показали мне как. Спасибо!

3 ответа

Посмотрите, поможет ли это, и дайте мне знать...

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

Код ниже работает для меня:

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

Этот работал для меня:

проявляются:

<uses-permission android:name="android.permission.EXPAND_STATUS_BAR"/>

Код:

//    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 для этого здесь.

Другие вопросы по тегам