点击从BroadcastReceiver推送的通知时打开活动

时间:2013-02-21 02:21:13

标签: android android-notifications android-notification-bar android-broadcast

我有一点问题。我有一个AlarmManager将一个意图发送到BroadcastReceiver,在该类的onReceive方法中我将通知推送到StatusBar ...这就像一个魅力,但我需要在用户点击时打开一个活动在通知上,但我的代码中有一些问题,谷歌搜索和搜索后我找不到答案...所以这是我的代码推动通知:

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setClass(this.context, NewCommit.class);     
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);

PendingIntent sender = PendingIntent.getBroadcast(this.context, 192839, intent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_ONE_SHOT);

NotificationCompat.Builder noti = new NotificationCompat.Builder(this.context)
    .setSmallIcon(R.drawable.status_bar_icon)
    .setContentTitle("My notification")
    .setContentText("Hello World!")
    .setContentIntent(sender);



noti.setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE);


NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(181818, noti.build());

任何想法?这让我发疯了!

谢谢!

1 个答案:

答案 0 :(得分:4)

我用一个工作的代码仔细检查了你的代码。我认为NewCommit是你的活动。

除了在intent中显式设置活动(类似 Intent intent = new Intent(c,NewCommit.class);

我认为主要区别(和问题)是你正在打电话

PendingIntent.getBroadcast

而不是

PendingIntent.getActivity

doc说:

“检索将启动新活动的PendingIntent,例如调用Context.startActivity(Intent)。请注意,活动将在现有活动的上下文之外启动,因此您必须使用Intent.FLAG_ACTIVITY_NEW_TASK启动标记。意图。“