Как создать уникальный pendingIntents без requestCode - PullRequest
0 голосов
/ 21 сентября 2018

Как я могу создать уникальные ожидающие намерения с тем же requestCode и затем отменить их?Я хотел бы разделить их, например, с помощью UUID. Документация говорит, что добавление extra не делает их уникальными, может быть, я мог бы установитьData с помощью сгенерированной строки UUID?

это единственный вариант, который я придумал, но не уверен, будет ли он работать:

 val intent = Intent(context, cls)
 val uniqueId = Uri.parse("dedf788c-ecd7-43f4-a691-03e2117fd50e")
 intent.data = uniqueId

 val pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Вам не нужны разные requestCode с.Вы можете использовать ACTION или DATA, чтобы различать PendingIntent s.Например, вы можете установить свой GUID как ACTION, и этого достаточно, чтобы сделать PendingIntent уникальным.

Но вы также можете использовать другие данные (как у вас в исходном коде).Это также работает.

ПРИМЕЧАНИЕ. Однако вы пытаетесь проанализировать недопустимый URI.Вы должны попробовать что-то вроде:

val uniqueId = Uri.parse("scheme:///dedf788c-ecd7-43f4-a691-03e2117fd50e")
0 голосов
/ 21 сентября 2018

этот вопрос может быть дубликатом this .

Ваш код запроса должен быть уникальным, в противном случае PendingIntent будет обновлен до последнего намерения, если вы используете тот же код запроса (старый Api <22). </p>

Если вы не используете действие, вы можете добавить свой UUID в качестве фиктивного действия, чтобы сделать их уникальными.Вы должны сохранить код запроса, чтобы иметь возможность отменить старый PendingIntent.

...