Итак, у меня есть служба, в 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
просто изменил мои коды запроса и работает
Все было, спасибо. –