Как определить выбранную активность от намеренного выбора Android - PullRequest
0 голосов
/ 01 октября 2018

Я пытаюсь определить, какое намерение выбирает пользователь из моего пользовательского средства выбора, но по какой-то причине я не могу получить OnReceive to fire.Вот пример моего кода:

val extraIntents = intentList.toTypedArray()
val receiver = Intent(context, broadcastReceiver.javaClass)
val pendingIntent: PendingIntent = PendingIntent.getBroadcast(context, 0,                    
                                   receiver, PendingIntent.FLAG_UPDATE_CURRENT)
Intent.createChooser(intentList[0], "choose an intent..", 
                     pendingIntent.intentSender)
startActivityForResult(openInChooser, SELECTOR_CODE)

И ранее я определил broadcastReceiver:

broadcastReceiver = object : BroadcastReceiver() {
    override fun onReceive(p0: Context?, p1: Intent?) {
        TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
    }
}

Я запустил этот код и установил код прерывания для этого метода onReceive, но онникогда не срабатывал.Любая помощь будет высоко оценена!

1 Ответ

0 голосов
/ 01 октября 2018

Я вполне уверен, что вы не можете установить цель Intent для анонимного BroadcastReceiver или внутреннего BroadcastReceiver.

Сделайте его статическим подклассом или поместите его в отдельный файл.Вы все еще можете построить и зарегистрировать его динамически.(Sidenote: не забудьте зарегистрировать его. Он не получит Intents, если он не зарегистрирован.)

В качестве альтернативы, используйте настраиваемое действие и не беспокойтесь о явном целевом компоненте.Динамически зарегистрированные BroadcastReceivers не подлежат неявным ограничениям широковещания в Oreo.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...