Kotlin android извлекает приложение из широковещательного приемника

#android #kotlin #broadcastreceiver

Вопрос:

Есть ли какой-либо способ получить объект приложения из приемника BroadcastReceiver? Прямо сейчас у меня есть что-то вроде этого:

 class SmsReceiver : BroadcastReceiver() {
    private var smsHandler = SmsHandler()

    override fun onReceive(context: Context?, intent: Intent) {
        for (smsMessage in Telephony.Sms.Intents.getMessagesFromIntent(intent)) {
            val application = getApplication() //This one does not work
            if (context != null) smsHandler.processSmSMessage(smsMessage, context, application)                
        }
    }
}
 

Ответ №1:

Вы можете позвонить applicationObject отсюда applicationContext .

Что-то вроде этого:

 class SmsReceiver : BroadcastReceiver() {
    private var smsHandler = SmsHandler()

    override fun onReceive(context: Context?, intent: Intent) {
        for (smsMessage in Telephony.Sms.Intents.getMessagesFromIntent(intent)) {
            val application = (context?.applicationContext as MyApp) ?: return
            if (context != null) smsHandler.processSmSMessage(smsMessage, context, application)                
        }
    }
}
 

Примечание: MyApp является ли класс, который расширяется с Application