Как получить значок уведомления другого приложения?

Я использую NotificationListenerService для получения уведомлений с помощью блога kpbird. Но я не могу извлечь значок, который можно нарисовать. Я также просматриваю это, но мне ничего не ясно. Пожалуйста помоги.


person PPB    schedule 30.09.2015    source источник


Ответы (1)


Чтобы получить другой значок приложения, просто получите имя пакета этого приложения и используйте приведенный ниже код. Вы получите имя пакета из экземпляра уведомления.

String pack= "com.whatsapp" // ex. for whatsapp;
        Context remotePackageContext = null; 
        Bitmap bmp = null;
        try {  
            remotePackageContext = getApplicationContext().createPackageContext(pack, 0);  
            Drawable icon = remotePackageContext.getResources().getDrawable(id);  
            if(icon !=null) {  
                bmp = ((BitmapDrawable) icon).getBitmap();
            }

        } catch (Exception e) {  
            e.printStackTrace();  
        }
person Saad Bin Iqbal    schedule 04.01.2016
comment
откуда ид? - person Besnik; 17.06.2016
comment
Здесь «id» — это идентификатор ресурса значка, который вы можете получить из объекта уведомления. - person Saad Bin Iqbal; 20.06.2016
comment
Например: Drawable icon = remotePackageContext.getResources().getDrawable(notification.icon); - person Saad Bin Iqbal; 20.06.2016
comment
Спасибо @SaadBinIqbal! важно отметить, что этот код должен использовать statusBarNotificationInstance.getNotification().icon, а не statusBarNotificationInstance.getId() - person Yoav Feuerstein; 25.01.2017
comment
Это позволит получить значок из приложения, а не значок, показанный в уведомлении. - person Denny; 02.03.2017