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

Я использовал приведенный ниже код для отображения уведомлений в панели уведомлений.

это работало нормально.

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

Как я могу сделать?

NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

Notification note = new Notification(R.drawable.image,"status message", System.currentTimeMillis());

        Intent in = new Intent(Notify.this,CommentU.class);
        PendingIntent pi = PendingIntent.getActivity(Notify.this, 0, in, 0);
        note.setLatestEventInfo(Notify.this,"NotificationTitle", "You have a new Commentio", pi);
        note.number = ++count;
        note.vibrate = new long[] { 500l, 200l, 200l, 500l };
        note.flags |= Notification.FLAG_AUTO_CANCEL;
        nm.notify(NOTIFY_ME_ID, note);

Заранее спасибо.


person user2159475    schedule 01.04.2013    source источник
comment
взгляните на этот образец code4reference.com/2012/07/android-jelly -bean-уведомление   -  person itsrajesh4uguys    schedule 01.04.2013


Ответы (2)


У меня есть для вас одно предложение: вам нужно загрузить то изображение, которое вы хотите показать, а затем вы можете установить его как растровое изображение: проверьте код ниже. Я создал один BITMAP. ссылка на его внешний вид:

введите здесь описание изображения

для этого вы должны добавить android-support-v4.jar

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
                this).setSmallIcon(R.drawable.ic_launcher)
                .setContentTitle("My notification").setLargeIcon(BITMAP)
                .setContentText("Hello World!");

        Intent resultIntent = new Intent(this, test.class);

        TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);

        stackBuilder.addParentStack(test.class);

        stackBuilder.addNextIntent(resultIntent);
        PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0,
                PendingIntent.FLAG_UPDATE_CURRENT);
        mBuilder.setContentIntent(resultPendingIntent);
        NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

        mNotificationManager.notify(NOTIFY_ME_ID, mBuilder.build());

подробнее см. эту ссылку.

Удаление уведомлений

Уведомления остаются видимыми до тех пор, пока не произойдет одно из следующих событий:

Пользователь отклоняет уведомление либо индивидуально, либо с помощью «Очистить все» (если уведомление можно очистить).

Пользователь щелкает уведомление, и вы вызвали setAutoCancel() при создании уведомления. Вы вызываете cancel() для определенного идентификатора уведомления. Этот метод также удаляет текущие уведомления.

Вы вызываете cancelAll(), который удаляет все уведомления, которые вы ранее отправили.

Отредактировано: просто замените это.

mBuilder = new NotificationCompat.Builder(
                this).setSmallIcon(R.drawable.ic_launcher)
                .setContentTitle("My notification").setLargeIcon(BITMAP)
                .setAutoCancel(true)
                .setContentText("Hello World!");
person Dhaval Parmar    schedule 01.04.2013
comment
Спасибо за ваш ответ. Но как я могу скрыть уведомление из панели уведомлений при нажатии на нее. - person user2159475; 01.04.2013
comment
Я использовал метод setAutoCanel(), чтобы исчезнуть. - person user2159475; 01.04.2013
comment
@ user2159475: если это правильно, примите его. ---› meta.stackexchange.com/a/5235/182434 - person Dhaval Parmar; 09.04.2013

просто добавьте несколько значков в папку ресурсов, а затем

int myIcon = R.drawable.image;

тут твоя логика....

и измените значение значка в соответствии с вашей логикой, например myIcon = R.drawable.somenewimage;

а затем, наконец, установите уведомление

Notification note = new Notification(myIcon,"status message", System.currentTimeMillis());

person Antarix    schedule 01.04.2013