如何获取其他应用的通知图标?

Posted

技术标签:

【中文标题】如何获取其他应用的通知图标?【英文标题】:How to get notification icon of other app? 【发布时间】:2015-09-30 06:29:38 【问题描述】:

在kpbird blog 的帮助下,我正在使用 NotificationListenerService 来捕获通知。但我无法提取图标的可绘制对象。我也正在经历this,但我还不清楚。请帮忙。

【问题讨论】:

【参考方案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();  
        

【讨论】:

id 来自哪里? 这里的'id'是你可以从通知对象中获取的图标资源id。 例如:- Drawable icon = remotePackageContext.getResources().getDrawable(notification.icon); 感谢@SaadBinIqbal!需要注意的是,这段代码应该使用statusBarNotificationInstance.getNotification().icon 而不是statusBarNotificationInstance.getId() 这将从应用程序中获取图标,而不是通知中显示的图标。

以上是关于如何获取其他应用的通知图标?的主要内容,如果未能解决你的问题,请参考以下文章

屏幕锁定时如何通知推送通知?

如何获取通知区域图标列表?

在 iPhone 中获取推送通知时徽章图标不会增加?

如何在 appdelegate 中获取传递的通知详细信息

如何在iphone中获取推送通知[重复]

如何从 iOS 系统上的进程 pid 中获取其他应用程序图标?