personalizar pantalla ocultar notificaciones iconos estado despliega como bloqueo barra baja aparece activar android android-layout notifications

pantalla - ocultar iconos de la barra de estado android



Muestra solo un pequeño icono en la barra de estado sin mostrar notificación (4)

No es una buena idea mostrar un ícono sin mostrarle ninguna Notificación relacionada, según los documentos del desarrollador,

Una notificación de barra de estado requiere todo lo siguiente:

  • Un icono para la barra de estado (que le interesa)
  • Un título y un mensaje expandido para la vista expandida (a menos que defina una vista expandida personalizada)
  • PendingIntent, que se activará cuando se haga clic en la notificación para mostrar información relacionada.

Entonces, si no quiere arruinar la experiencia del usuario, es muy recomendable seguir las pautas de UX.

lógicamente: hay dos partes de la barra de estado: usuario (notificaciones) y sistema (otro). Si el sistema permite poner algo en la parte del sistema, habrá muchos íconos inútiles (publicados por otras aplicaciones), y no habrá coherencia, y podría romper toda la experiencia de uso.

Encontró una respuesta que le proporciona la manera de acceder al ícono de la barra de estado predeterminada de la Alarma que se encuentra here . Después de Rootear tu móvil, puedes hacerlo. Hay algunos trucos en YouTube que lo hacen. Algunas respuestas sobre el mismo tema sugieren mostrar el ícono usando Notificación, pero deja el Texto de Notificación vacío para que el usuario solo vea el ícono, pero nuevamente no es una manera .

Este es el código para la implementación de la barra de estado en el sistema donde se describen los iconos izquierdo y derecho (es decir, los iconos del sistema) para que pueda obtener alguna ventaja desde allí. La respuesta que describe está here .

Quiero mostrar constantemente un icono pequeño en la status bar , sin mostrar la notificación en la bandeja de notification del sistema.

Intenté usar un layout personalizado y configuré la visibilidad del elemento raíz en View.GONE o View.INVISIBLE , pero para ambos, el sistema lo ignora.

También intenté establecer la altura del elemento raíz, pero el sistema también lo ignora.

Aquí está mi código:

R.layout.custom_notification :

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/custom_notification" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:background="@drawable/notif_background" android:orientation="horizontal" android:baselineAligned="false"/>

Y el código para mostrar la Notification :

NotificationManager nm = (NotificationManager) ctx.getSystemService(Context.NOTIFICATION_SERVICE); NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(ctx); mBuilder .setSmallIcon(drawableId) .setAutoCancel(false) .setOngoing(true) .setPriority(Notification.PRIORITY_MAX); Intent resultIntent = new Intent(ctx, SettingsActivity.class); PendingIntent resultPendingIntent = PendingIntent.getActivity(ctx, 0, resultIntent, 0); mBuilder.setContentIntent(resultPendingIntent); int layout = R.layout.custom_notification ; RemoteViews contentView = new RemoteViews(ctx.getPackageName(), layout); contentView.setViewVisibility(R.id.custom_notification, View.INVISIBLE); mBuilder.setContent(contentView); nm.notify(NOTIFICATION_ID, mBuilder.build());

Soy muy consciente de que para lograr mi objetivo no necesitaré una solución documentada. Y también soy consciente de que las directrices de UX recomiendan encarecidamente no hacer tal cosa. Así que no tiene sentido escribirme esto como una respuesta.


Puede hacer esto usando InputMethodService.showStatusIcon() . Pero le sugiero que muestre una notificación normal y explique al usuario qué hace su aplicación en este momento.


Puedes usar RemoteViews para ocultar el título y el texto.

R.id.notification_layout.xml:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <ImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_alignParentLeft="true" android:layout_marginRight="10dp" android:layout_marginLeft="7dp" android:src="@drawable/icon_battery" /> </RelativeLayout>

en MainActivity:

RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.notification_layout); Context application = getApplicationContext(); Intent resultIntent = new Intent(application, MainActivity.class); resultIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP); PendingIntent resultPendingIntent = PendingIntent.getActivity(application, 0, resultIntent, 0); NotificationManager nmgr = (NotificationManager) application.getSystemService(Context.NOTIFICATION_SERVICE); NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(application) .setSmallIcon(R.drawable.icon_battery); mBuilder.setContent(contentView); Notification mNotification = mBuilder.build(); // mNotification.flags |= FLAG_NO_CLEAR; nmgr.notify(0, mNotification);


Yo sugeriría no utilizar para la aplicación de Google Play de usuall. Hay varias razones:

  1. Si encuentra un error que puede ayudar a mostrar una notificación invisible, no parece nada. El error solo puede funcionar en un dispositivo particular con la versión particular de Android. Recuerde: esto es muy, muy difícil de configurar, su código normal se ejecuta correctamente en la mayoría de los dispositivos utilizando API abierta. La API oculta no funciona en todos los dispositivos.

    1. No hay tal comportamiento en el código fuente: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.1.1_r1/android/app/NotificationManager.java#NotificationManager.notify%28int%2Candroid.app.Notification%29 . No se puede encontrar nada con tal comportamiento.

    2. Para un comportamiento predecible usa * Compat clases de Android. Es decir, para notificaciones solo use la clase NotificationCompat ! Solo con wrapper puedes ayudar a tu aplicación a mostrar notificaciones.

    3. Esto es muy feo UI / UX.

    4. El flujo de trabajo de las notificaciones depende enormemente de la versión de Android.