2017-04-20 47 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