2
我创建了一个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
布尔值,它被设置为真,在通知按钮被点击时。
但即使只点击通知(而不是按钮),仍然会调用onNewIntent()中的动作。 也就是说,openListFlag
的值始终设置为true。
我该如何确定,该操作仅在按钮单击时执行?
它看起来像你逝去的意图具有关键比你在HomeActivity访问不同(AppConstants“list_intent”)。他们是一样的吗? –
是的,编辑代码。 – reiley
ic_open_list图标的大小是多少?是否有任何问题?尝试点击通知的不同部分 –