Categories: Android

Añadir un Badge en Android (BadgeProvider)

¿Qué es un Badge?

Es un pequeño contador ubicado normalmente en la parte superior derecha en los iconos de las aplicaciones. Generalmente se usa para cuantificar las tareas que el usuario tiene pendientes por hacer. Esta funcionalidad es habitual en iOS pero no en Android. En Android sólo ciertas marcas de móviles como son Samsung, Sony y Xiaomi entre otras son las que lo proporcionan. Esta “capa” la proporciona una aplicación de sistemas que viene preinstalada en estas plataformas y que aportan una capa visual a los iconos o launchers de las aplicaciones. Por lo que se puede decir que esta funcionalidad no es nativa y no funcionará en todos los dispositivos. Puesto que es una aplicación de sistema la que coloca o no el Badge en las aplicaciones, la única forma que tenemos de colocar un badge en nuestra aplicación es añadiéndolo directamente a la aplicación y será ésta la que modificará el contador.

¿Cómo añadimos un Badge a nuestra app?

La aplicación que gestiona todos los badges se llama BadgeProvider (puede cambiar en función del móvil y la versión de TouchWiz). Todo el código de esta entrada será útil para móviles Samsung y no se garantiza que funcione en otros dispositivos y su funcionamiento depende de los cambios que tenga BadgeProvider en sus posteriores versiones.

A continuación se detallan los pasos a seguir:

1.- Permisos

Es necesario añadir permisos de escritura y/o lectura de la aplicación a la que queremos acceder. En este caso serían:

uses-permission android:name="com.sec.android.provider.badge.permission.READ"
uses-permission android:name="com.sec.android.provider.badge.permission.WRITE"

2.- Estructura de la Base de Datos

La estructura de la tabla en Base de datos en la siguiente:

_id         --> Integer
package     --> text
class       --> text
badgecount  --> integer
icon        --> blob

3.- Consultar todos los Badges

Para consultar el Badge de las aplicaciones, es necesario el uso de un cursor para sacar la información de la Base de Datos.

//- Esta es la Uri para poder acceder al content del BadgePrider
Uri uri = Uri.parse("content://com.sec.badge/apps");
 
Cursor c = getContentResolver().query(uri, null, null, null, null);
 
//- Si es null indica que o no estamos en un móvil que soporte este tipo de badge o simplemente que el content ha cambiado
if (c == null) {
    return;
}
 
try {
    if (!c.moveToFirst()) {
        // No results. Nothing to query
        return;
    }
 
    c.moveToPosition(-1);
    while (c.moveToNext()) {
        String pkg = c.getString(1);
        String class = c.getString(2);
        int badgeCount = c.getInt(3);
        Log.d("Badge", "package: " + pkg + ", class: " + class + ", count: " + badgeCount);
    }
} finally {
    c.close();
} 

4.- Añadir un nuevo registro

Tenemos que especificar tanto el package de nuestra app, la main activity y el contador.

ContentValues cv = new ContentValues();
cv.put("package", getPackageName());
//- Nombre de la activity declarada en el manifest como android.intent.action.MAIN junto con la package de nuestra aplicación.
cv.put("class", "com.franlopez.pruebabadge.activities.TestActivity");
//- Entero con el número que queremos mostrar
cv.put("badgecount", 1);
 
//- Lanzamos el intent
getContentResolver().insert(Uri.parse("content://com.sec.badge/apps"), cv);

5.- Modificar un registro existente

Si queremos modificar el badge de nuestra aplicación sólo tenemos que actualizar el registro (si existe) en la BD de la aplicación.

ContentValues cv = new ContentValues();
cv.put("badgecount", 0);
getContentResolver().update(Uri.parse("content://com.sec.badge/apps"), cv, "package=?", new String[] {getPackageName()});
Fran López

Recent Posts

Curso Android – Cadena en ConstraintLayout

En este primer vídeo del curso de Android desde 0 se explica cómo maquetar una…

2 años ago

Subir JSON Firebase (Firestore Database)

Como siempre, si quieres ver directamente el vídeo donde se realiza toda la configuración pasos…

3 años ago

¿El mejor cargador inalámbrico?

En esta ocasión hacemos una review del cargador inalámbrico Samsung Wireless Charger Duo Pad de…

3 años ago

Batería Galaxy Buds Pro, ¿cuánto duran?

Primero y antes de nada, si quieres ver un vídeo detallado de esta prueba, tienes…

3 años ago

OnePlus 9 Pro, potencia, diseño y precio “ajustado”.

El 23 de marzo se presentaron los nuevos dispositivos de OnePlus. Han sido una grata…

3 años ago

Review Galaxy Buds Pro. ¿MERECEN LA PENA?

Primero y antes de nada, si quieres ver un vídeo detallado de los Samsung Galaxy…

3 años ago