0

所以這是我用我的意圖代碼:第二個按鈕,我收到IntentService套裝中包含從第一個按鈕的額外

String tag = "#business"; String secondTag = "#personal"; 
    Intent action1Intent = new Intent(context, NotificationActionService.class) 
      .setAction("tag").putExtra("id", psTrip.getId()).putExtra("tag", tag); 
    PendingIntent action1PendingIntent = PendingIntent.getService(context, 0, 
      action1Intent, PendingIntent.FLAG_ONE_SHOT); 

    Intent action2Intent = new Intent(context, NotificationActionService.class) 
      .setAction("tag").putExtra("id", psTrip.getId()).putExtra("tag", secondTag); 
    PendingIntent action2PendingIntent = PendingIntent.getService(context, 0, 
      action2Intent, PendingIntent.FLAG_ONE_SHOT); 

這是我如何創建行動:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) { 
     RemoteInput remoteInput = new RemoteInput.Builder("Business") 
       .setLabel("Business") 
       .build(); 
     Notification.Action action = 
       new Notification.Action.Builder(R.drawable.btn_tag_trip, 
         tag, action1PendingIntent) 
         .addRemoteInput(remoteInput) 
         .build(); 

     RemoteInput remoteInput2 = new RemoteInput.Builder("Personal") 
       .setLabel("Personal") 
       .build(); 
     Notification.Action action2 = 
       new Notification.Action.Builder(R.drawable.btn_tag_trip, 
         secondTag, action2PendingIntent) 
         .addRemoteInput(remoteInput2) 
         .build(); 

     noti = new Notification.Builder(context) 
       .setContentTitle(context.getString(R.string.passenger_name)) 
       .setContentText(content).setSmallIcon(R.drawable.notification_icon) 
       .setContentIntent(pIntent) 
       .addAction(action) 
       .addAction(action2).build(); 
    } 

Action2調用action2PendingIntent和action調用action1PendingIntent。 但在我intentService。我有我的onHandleIntent:

final NotificationManager notifManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
     notifManager.cancelAll(); 
     String action = intent.getAction(); 
     Log.i("", "Received notification action: " + action); 
     Bundle bundle = intent.getExtras(); 
     if (bundle != null) { 
      final String id = bundle.getString("id"); 
      final String tag = bundle.getString("tag"); 
      Log.i("", "Received notification action: id: " + id + "/tag: " + tag); 
} 

但是bundle.getString(「tag」);將始終返回「#business」(第一個動作的標記,即使我按下第二個按鈕) 爲什麼會發生這種情況?

+1

使用不同requestCodes() – pskink

回答

0

感謝@pskink我沒有管理,使其工作,通過更改第二待意圖請求的代碼,如:呼叫.getService時

PendingIntent action2PendingIntent = PendingIntent.getService(context, 2, 
     action2Intent, PendingIntent.FLAG_ONE_SHOT); 
1

使用上面提到的PendingIntent.FLAG_UPDATE_CURRENT標誌有助於更新活動的未決意圖。

相關問題