#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