接收通知时动态setSmallIcon()?

时间:2015-12-16 19:59:18

标签: android notifications

这适用于一般通知应用。我已设法捕获并设置通知的大图标,因为它接受Bitmap类型作为参数,但设置小图标证明更加棘手。它只接受int资源ID。由于我不知道哪个应用程序可能会向我的侦听器发送通知,因此我必须动态生成它。我可以通过侦听传入通知并将其解压缩来获取小图标,但我似乎找不到通过其资源ID设置它的方法。

我认为不可能,但只是想确认一下。如果有,是否有解决方法,或者我是否必须手动将我想支持的特定应用程序的小图标加载到我的Drawable文件夹中,然后从那里使用资源ID?这听起来很麻烦,因为我已经获得了正确的图标,但无法加载它!以下是我的代码:

public class NotificationService extends NotificationListenerService {

    @Override
    public void onNotificationPosted(StatusBarNotification sbn) {
                          Bundle extras = sbn.getNotification().extras;
                          int id1 = extras.getInt(Notification.EXTRA_SMALL_ICON);; 

                    //Building Notifications
                    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context.getApplicationContext(id1))
                            .setSmallIcon(R.mipmap.ic_launcher) //This gives an error
                            .setContentTitle("My Title")
                            .setContentText("My Text");

                    NotificationManager notificationManager =
                            (NotificationManager) context.getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);

                    notificationManager.notify(notiId, mBuilder.build());

}
}

2 个答案:

答案 0 :(得分:0)

如果小图标超过Android规定的大小,则可能无法加载。一般情况下,我们只能通过存储在资源文件夹中的图像加载小图标。

可以从以下链接获取有关推送通知的图标大小的详细信息 GCM Push Notification Large Icon size

答案 1 :(得分:0)

推送通知中的小图标无法动态添加。可以通过运行异步任务动态添加大图标。如果没有小图标,应用程序将崩溃。 PushNotification必须使用小图标。