2014-07-02 84 views
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

我该如何确定,该操作仅在按钮单击时执行?

+0

它看起来像你逝去的意图具有关键比你在HomeActivity访问不同(AppConstants“list_intent”)。他们是一样的吗? –

+0

是的,编辑代码。 – reiley

+0

ic_open_list图标的大小是多少?是否有任何问题?尝试点击通知的不同部分 –

回答