Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Prevenga la barra de estado para que aparezca android (modificado)

Estoy implementando una aplicación de modo de quiosco y he hecho con éxito la aplicación a pantalla completa sin barra de estado apariencia post 4.3, pero no se puede ocultar la barra de estado en 4.3 y 4.4 como barra de estado aparece cuando deslizar hacia abajo en la parte superior de la pantalla.

He intentado hacerlo a pantalla completa por

  • ¿Cómo puedo verificar las transacciones de facturación de Android en la aplicación en MI servidor?
  • InApp Compra RESTORE_TRANSACTIONS, no puedo calcular el código
  • Cómo reanudar Fragmento de BackStack si existe
  • UnsupportedMethodException Android Studio 0.8.9
  • ¿Es posible en android definir constantes en XML que varían con la configuración
  • Reflexión de Java que maneja cambios de la biblioteca
    • Especificando el tema de pantalla completa en el manifiesto
    • Ventana de configuración Banderas ie setFlags
    • SetSystemUiVisibility

    Posible duplicado pero ninguna solución concreta encontrada

    Ocultar permanentemente la barra de estado de Android

    Finalmente lo que quiero es, ¿cómo ocultar la barra de estado permanentemente en una actividad? En android 4.3.4.4.5.6versiones

  • Iniciar Actividad dentro deReceber BroadcastReceiver
  • Saber cuándo se está editando el texto de edición
  • Salir de una aplicación de Android
  • Proteger contra revisiones falsas en Google Play
  • Estilo de un AppCompatButton en v21 para no tener sombra y radio de esquina de cero
  • Cómo poner una vista sobre otros en el diseño relativo de forma programática en android?
  • 2 Solutions collect form web for “Prevenga la barra de estado para que aparezca android (modificado)”

    No pudimos evitar que el estado apareciera en modo de pantalla completa en los dispositivos kitkat, por lo que se hizo un hack que todavía se ajusta al requisito, es decir, bloquear la barra de estado de expandirse.

    Para que funcione, la aplicación no se hizo a pantalla completa. Ponemos una superposición sobre la barra de estado y consumimos todos los eventos de entrada. Evitó que el estatus se expandiera.

    Nota:

    • CustomViewGroup es una clase personalizada que extiende cualquier diseño (marco, diseño relativo, etc) y consume evento táctil.
    • Para consumir el evento táctil anula el método onInterceptTouchEvent del grupo de vistas y devuelve true

    Actualizado

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

    Implementación de customViewGroup

    Código:

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

    En Android M usted tiene que obtener un permiso extra para hacer superposiciones. android.permission.SYSTEM_ALERT_WINDOW no es suficiente! Así que usé el código de la respuesta de Abhimaan dentro de disableStatusBar() y tuve que hacer una intención de abrir el diálogo de configuración correcta. También he añadido la eliminación de vista en onDestroy() para habilitar la barra de estado cuando sale la aplicación. También reduje la altura de la superposición a 40, ya que parece ser suficiente. Código funciona con 5.1 y 6.0 aquí.

     public static final int OVERLAY_PERMISSION_REQ_CODE = 4545; protected CustomViewGroup blockingView = null; @Override protected void onDestroy() { super.onDestroy(); if (blockingView!=null) { WindowManager manager = ((WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE)); manager.removeView(blockingView); } } @Override protected void onCreate(Bundle savedInstanceState) { if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (!Settings.canDrawOverlays(this)) { Toast.makeText(this, "Please give my app this permission!", Toast.LENGTH_SHORT).show(); Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,Uri.parse("package:" + getPackageName())); startActivityForResult(intent, OVERLAY_PERMISSION_REQ_CODE); } else { disableStatusBar(); } } else { disableStatusBar(); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == OVERLAY_PERMISSION_REQ_CODE) { if (!Settings.canDrawOverlays(this)) { Toast.makeText(this, "User can access system settings without this permission!", Toast.LENGTH_SHORT).show(); } else { disableStatusBar(); } } } protected void disableStatusBar() { 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 receive 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) (40 * getResources().getDisplayMetrics().scaledDensity); localLayoutParams.format = PixelFormat.TRANSPARENT; blockingView = new CustomViewGroup(this); manager.addView(blockingView, localLayoutParams); } 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.