Pregunta ¿Cómo obtengo el ID de recurso del ícono de la aplicación en mi aplicación desde una API?


Estoy escribiendo una API que se puede incluir en varias APK. Quiero generar una notificación con el ícono de esa aplicación, que requiere la identificación del recurso. No estoy encontrando una manera de encontrar el ID de recurso. No sé el nombre del icono de la aplicación. El contexto se pasa a mi clase en el constructor. Esto es lo que tengo hasta ahora:

        ApplicationInfo app = mContext.getApplicationInfo();
        packageManager = mContext.getPackageManager();

        Drawable drawable = packageManager.getApplicationIcon(app);
        String packageName = packageManager.getApplicationLabel(app);

        // logical next step, but I don't know the name of the drawable
        int appIconId = mContext.getResources().getIdentifier("???", "drawable", packageName);

¡Gracias!


5
2017-12-04 19:59


origen


Respuestas:


Me temo que esta información debe ser inyectada en su código por la persona que llama. Por ejemplo, podría pasarse como un parámetro entero junto con el Contexto al llamar al constructor / método de inicialización apropiado.

Al menos, esto también significaría que su usuario tiene un mayor control sobre la apariencia de las notificaciones de su componente; lo considero algo bueno.


0
2017-12-04 20:45



Este método debería funcionar para obtener el icono de la aplicación de CUALQUIER aplicación, incluida la suya:

String packageName=...; //use getPackageName() in case you wish to use yours
final PackageManager pm=getPackageManager();
final ApplicationInfo applicationInfo=pm.getApplicationInfo(packageName,PackageManager.GET_META_DATA);
final Resources resources=pm.getResourcesForApplication(applicationInfo);
final int appIconResId=applicationInfo.icon;
final Bitmap appIconBitmap=BitmapFactory.decodeResource(resources,appIconResId);

8
2017-12-05 21:11



Quizás la API ha cambiado desde que se hizo esta pregunta, pero no creo que sea necesario usar el PackageManager o el objeto Resources. Como ya tiene el objeto de contexto, puede obtener la identificación del recurso del ícono de la aplicación directamente desde ApplicationInfo, así:

int appIconResourceId = context.getApplicationInfo().icon;

Obtengo el ID de recurso de ícono de la aplicación como este para notificaciones y también para establecer íconos en mi DocumentsProvider extiende las clases (Storage Access Framework).


1
2018-04-19 19:02