2017-04-20 57 views
0

我有一个动作列表,我需要根据动作类型创建一个动作。我目前的设置覆盖了以前的方式。我该如何补救?Android NotificationCompat.Action.Builder从数组动态创建多个动作

允许使用:

 "actions": [{ 
      "type":"response", 
      "text": "Confirm" 
     }, { 
      "type":"response", 
      "text": "Decline" 
     }, { 
      "type":"info", 
      "text": "More Info", 
      "link": "http://www.notifyd.com" 
     }] 

然后:

 for (int i=0; i < actions.length(); i++) { 
      JSONObject action = actions.getJSONObject(i); 
      String type = (String)action.get("type"); 
      if (type.equals("response")) { 
       Intent actionIntent = new Intent("blah blah blah"); 
       String text = (String)action.get("text"); 
       actionIntent.putExtra("text", text); 
       PendingIntent pendingAction = PendingIntent.getBroadcast(this, id, actionIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
       NotificationCompat.Action actionItem = new NotificationCompat.Action.Builder(0, text, pendingAction).build(); 
       notificationBuilder.addAction(actionItem); 
      } else if (type.equals("info")) { 
       // logic here is fine 
      } 
     } 

的问题就变成: 不管响应(其类型 '响应' 的动作)被选择在通知的,“拒绝“返回...

一如既往的任何方向,欢呼声,嘲笑,烂水果等表示赞赏!

回答

1

可能是您对不同的PendingIntent使用相同的requestCode,对于不同的Notification使用相同的通知Id

通知idrequestCodePendingIntent应该unique得到正确通知data

// Pending Intent 
PendingIntent pendingAction = PendingIntent.getBroadcast(this, UNIQUE_REQUEST_CODE, actionIntent, PendingIntent.FLAG_UPDATE_CURRENT); 


// Notification Manager 
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
notificationManager.notify(UNIQUE_NOTIFICATION_ID, notificationBuilder.build()); 

希望这将有助于〜

+0

我要去纪念这个作为回答,因为它确实是UNIQUE_REQUEST_CODE ...'''PendingIntent.getActivity(这个,我,notificationIntent,PendingIntent.FLAG_UPDATE_CURRENT); '''谢谢指出,我完全掩饰了这方面! – studiobrain

+0

高兴地帮助你:) – FAT