elgui
elgui

Reputation: 3323

Close Status Bar after Notification click

My notification contains several buttons :

The problem is, the first button does not close the status bar...

the PendingIntent sent by the first button :

Intent activityIntent = new Intent(smp, MusicShaker.class)
            .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
                    | Intent.FLAG_ACTIVITY_SINGLE_TOP);
activityIntent.setAction(MyIntentAction.DO_LAUNCH_ACTIVITY_FROM_NOTIF);
remoteViews.setOnClickPendingIntent(R.id.notif_album_IV, PendingIntent
            .getActivity(ctxt, 0, activityIntent,
                    PendingIntent.FLAG_CANCEL_CURRENT));

the activity is correctly launched, but the status bar stays there and does not close itself.
Am I missing/misunderstanding a flag ? can I close the status bar progamaticaly from MyActivity.onResume() ?
edit: by the way, the notification is pushed by a service

thanks =)

Upvotes: 6

Views: 5408

Answers (4)

Michael Litvin
Michael Litvin

Reputation: 4126

This worked for me:

sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS));

Upvotes: 2

rashadex
rashadex

Reputation: 41

You, just need to specify setAutoCancel(true) while creating builder. And that is all :)

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
            .setSmallIcon(R.drawable.ic_launcher)
            .setContentTitle("title goes here")
            .setContentText("content text goes here").setAutoCancel(true);

Upvotes: 4

elgui
elgui

Reputation: 3323

ok, I found a solution... I could not reproduce the same behavior produced by standard notification, so I :
- made my imageButton "notif_album_IV" non clickable, and change it to an ImageView
- used this code :

builder.setContentIntent(PendingIntent.getActivity(smp, 0,
  activityIntent,PendingIntent.FLAG_CANCEL_CURRENT))

instead of setting the setOnClickPendingIntent "manually" on the image, the intent broadcast is handled by the content background

Upvotes: 2

devnate
devnate

Reputation: 764

Yeah, you'll have to cancel the notification programmatically when your app starts.

NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.cancel(NOTIFICATION_ID);

Upvotes: 1

Related Questions