2015-04-29 2 views
0

Итак, у меня есть служба, в onCreate() Я настраиваю 3 ожидающих намерения для запуска той же службы, каждый из которых имеет разные дополнительные данные, чтобы указать действие. Я создаю уведомление, и я хочу использовать одно ожидающее намерение как действие click, одно как действие отклонения, а третье - для тревоги.Android Ожидание намерения для начала службы

 Intent iCancel = new Intent(this, BootService.class); 
     Intent iAlarm = new Intent(this, BootService.class); 
     Intent iDismiss = new Intent(this, BootService.class); 

     // each will have actions 
     iAlarm.putExtra(INTENT_ACTION, INTENT_ALARM_FIRED); 
     iCancel.putExtra(INTENT_ACTION, INTENT_CANCEL); 
     iDismiss.putExtra(INTENT_ACTION, INTENT_DISMISS); 

     PendingIntent piCancel = PendingIntent.getService(
       this, 
       0, 
       iCancel, 
       Intent.FILL_IN_DATA); 

     mPiAlarm = PendingIntent.getService(this, 0, iAlarm, Intent.FILL_IN_DATA); 

     PendingIntent piDismiss = PendingIntent.getService(this, 0, iDismiss, Intent.FILL_IN_DATA); 

     mNotifyBuilder = new NotificationCompat.Builder(this) 
       .setSmallIcon(R.drawable.ic_action_about) 
       .setContentTitle(getString(R.string.app_name)) 
       .setContentIntent(piCancel) 
       .setDeleteIntent(piDismiss); 

Проблема в том, все ожидающих намерениях, кажется, что имеют те же намерения дополнительных данных, поэтому, когда onStartCommand запускается независимо от того, было ли щелкнуло уведомление или уволенный или ни постоянная INTENT_CANCEL получено от intent.getIntExtra(INTENT_ACTION)

I верю, что это имеет какое-то отношение к флагам, используемым в PendingIntent.getService(), я смущен тем, что использовать. Я пробовал использовать PendingIntent.FLAG_CANCEL_CURRENT и UPDATE_CURRENT, но, похоже, проблема не устранена, но результат другой, я получаю постоянную INTENT_ALARM_FIRED для каждого действия.

Как я могу получить каждое ожидающее намерения иметь свои собственные дополнительные данные?

Решение

Я обнаружил точное предупреждение об этом сценарии прямо в PendingIntent док. http://developer.android.com/reference/android/app/PendingIntent.html

просто изменил мои коды запроса и работает

ответ

4

Это связано с Intents рассматривается то же самое. См. PendingIntent для получения дополнительной информации.

Одним из способов обойти это было бы просто изменить requestCode для каждого намерения. (Второй параметр в вызове getService)

+0

Все было, спасибо. –

Смежные вопросы