【发布时间】:2014-07-02 18:04:14
【问题描述】:
我创建了一个Notification 以显示在状态栏上。
在通知中我添加了一个Button,它执行一些操作。
要调用特定方法,在按钮单击时我使用建议的方法here。
代码:
// Building notification - this code is present inside a Service
NotificationManager mNotificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
Intent activityIntent = new Intent(this, HomeActivity.class);
activityIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, activityIntent, 0);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this).setContentTitle(fileName.toString()).setContentText("Subject")
.setSmallIcon(R.drawable.ic_app_icon).setContentIntent(pendingIntent).setAutoCancel(false);
// code to add button
Intent openListIntent = new Intent();
openListIntent.putExtra("list_intent", true);
PendingIntent listPendingIntent = PendingIntent.getActivity(this, 0, openListIntent, PendingIntent.FLAG_UPDATE_CURRENT);
notificationBuilder.addAction(R.drawable.ic_open_list, "List", listPendingIntent);
Notification notification = notificationBuilder.build();
// Code in HomeActivity.java to perform operation on button click
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
boolean openListFlag = intent.getBooleanExtra("list_intent", false);
if (openListFlag) {
// code to perform operation
}
}
我的方法是,当单击通知中的按钮时,我传递了一个 Extra 布尔值,该值设置为 true。
但即使只点击通知(而不是按钮),仍然会调用 onNewIntent() 中的操作。
也就是说,openListFlag 的值始终设置为 true。
我应该如何确保该操作仅在按钮单击时执行?
【问题讨论】:
-
看起来您传递的意图的键 (AppConstants."list_intent") 与您在 HomeActivity 中访问的不同。它们是一样的吗?
-
ic_open_list 图标的大小是多少?这有什么问题吗?尝试点击通知的不同部分
标签: android android-notifications android-pendingintent