2016-04-05 17 views
0

Eylemlerle bildirim oluşturdum. Ve bildirim ile kullanım için hizmet kullanıyorum. Her eylem için biraz fazladan bekleyen niyet yarattım. Ama hizmette, niyet için fazladan almaya çalıştığımda bunun yanlış bir değeri var.az bildirim eylemi için bir hizmet

sınıf NotificationCreator

public Notification createConnectedNotification(){ 
    Context context = TeamlabApplication.getInstance().getApplicationContext(); 
    CharSequence comeToWork = context.getString(R.string.toWork); 
    CharSequence goFromDinner = context.getString(R.string.fromDinner); 


    PendingIntent actionComeIntent = createActionSendPendingIntent(context, comeToWork.toString()); 
    Notification.Action.Builder sendMessageToWork = 
      new Notification.Action.Builder(R.mipmap.icon_notification_action_send, comeToWork, actionComeIntent); 

    PendingIntent actionDinnerIntent = createActionSendPendingIntent(context, goFromDinner.toString()); 
    Notification.Action.Builder sendMessageFromDinner = 
      new Notification.Action.Builder(R.mipmap.icon_notification_action_send, goFromDinner, actionDinnerIntent); 

    PendingIntent activityIntent = createActivityPendingIntent(context); 

    Notification.Builder builder = new Notification.Builder(context) 
      .setSmallIcon(R.mipmap.icon_notification_main) 
      .setContentTitle("Connected to WI-FI") 
      .setContentText("You connected to work WI-FI. Do you want to send message in teamLab") 
      .setContentIntent(activityIntent) 
      .setLights(Color.WHITE, 1000, 1000) 
      .setAutoCancel(true) 
      .addAction(sendMessageToWork.build()) 
      .addAction(sendMessageFromDinner.build()); 

    return builder.build(); 
} 



private PendingIntent createActionSendPendingIntent(Context context, String extraMessage){ 
    Intent intent = new Intent(context, NotificationService.class); 
    intent.putExtra(NotificationService.MESSAGE_EXTRA, extraMessage); 
    return PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_ONE_SHOT); 
} 

sınıf NotficationService

public int onStartCommand(Intent intent, int flags, int startId) { 
     if (intent != null) { 
      AppLog.d("Extra is: " + intent.getStringExtra(MESSAGE_EXTRA)); 
     } 

String toWork = "To work" , goFromDinner = "From dinner": İşte benim kodudur. Bildirimde, goFromDinner dizgisi ile acton bastım, ancak Extra i'de To work sonucuna vardım. Nasıl düzeltilir?

cevap

0

Çözümü buldum. Farklı eylemler için farklı requestCode ayarlamanız gerekiyor. Yani şimdi benim kodum:

private PendingIntent createActionSendPendingIntent(int requestCode, Context context, String extraMessage){ 
    Intent intent = new Intent(context, NotificationService.class); 
    intent.putExtra(NotificationService.MESSAGE_EXTRA, extraMessage); 
    return PendingIntent.getService(context, requestCode, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
} 
İlgili konular