2

i'm trying create notification jelly bean (api 16) and have get issue with my notification, this my code

public class CreateNotification extends AsyncTask<Void, Void, Void> {

        int style = NORMAL;

        public CreateNotification(int style) {
            this.style = style;
        }
        @Override
        protected Void doInBackground(Void... params) {
            Notification noti = new Notification();

            noti = setNormalNotification();

            noti.defaults |= Notification.DEFAULT_LIGHTS;
            noti.defaults |= Notification.DEFAULT_VIBRATE;
            noti.defaults |= Notification.DEFAULT_SOUND;

            noti.flags |= Notification.FLAG_ONLY_ALERT_ONCE;

            mNotificationManager.notify(0, noti);

            return null;

        }
    }


 private Notification setNormalNotification() {
        Bitmap remote_picture = null;

        remote_picture = getBitmapFromURL(sample_url);

        // Setup an explicit intent for an ResultActivity to receive.
        Intent resultIntent = new Intent(this, DetailActivity.class);

        // TaskStackBuilder ensures that the back button follows the recommended convention for the back key.
        TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);

        // Adds the back stack for the Intent (but not the Intent itself).
        stackBuilder.addParentStack(ResultActivity.class);

        // Adds the Intent that starts the Activity to the top of the stack.
        stackBuilder.addNextIntent(resultIntent);
        PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);

        return new NotificationCompat.Builder(this)
                .setSmallIcon(R.drawable.ic_launcher)
                .setAutoCancel(true)
                .setLargeIcon(remote_picture)
                .setContentIntent(resultPendingIntent)
                .addAction(R.drawable.ic_launcher, "Open detail", resultPendingIntent)
                .addAction(R.drawable.ic_launcher, "Close", resultPendingIntent)
                .setContentTitle("Normal Notification")
                .setContentText("This is an example of a Normal Style.").build();
    }

at line this

.addAction(R.drawable.ic_launcher, "Open detail", resultPendingIntent)
.addAction(R.drawable.ic_launcher, "Close", resultPendingIntent)

if i click open detail or close button, notification doesn't close.. how to fix it ? thank you, sorry with my engglish

bukanamay
  • 577
  • 5
  • 11
  • 26
  • 1
    You should find something useful in this: http://stackoverflow.com/questions/11883534/how-to-dismiss-android-notification-after-action-has-been-clicked – Effe Mar 06 '14 at 17:03
  • i have read thats, but i dont know how to implement :D – bukanamay Mar 06 '14 at 17:09

1 Answers1

2

When you create your resultIntent add the notification id. In your case it is the 0 you defined in mNotificationManager.notify(0, noti); so add it like this:

resultIntent.putExtra("NOTIFICATION_ID", 0);

then you can retrieve that id to cancel the notification on the onCreate of the the activity of your resultPendingIntent like this:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    manager.cancel(getIntent().getIntExtra("NOTIFICATION_ID", -1));
    //todo
}
Elkdor
  • 121
  • 1
  • 12