Я пытаюсь отправить сообщение о намерениях из-за действия уведомления на Android, но в некотором роде здесь потеряно.
У меня есть служба Android, которая получает информацию о намерениях от действий / организаций и соответственно реагирует, что прекрасно работает, но я не знаю, как отправить ее из действия уведомления.
Сервис выглядит примерно так.
class MyService : Service() {
override fun onCreate() {
super.onCreate()
LocalBroadcastManager.getInstance(this).registerReceiver(mIntentActionBroadcastReceiver, IntentFilter(SERVICE_BROADCAST_INTENT))
val broadcastIntentFilter = IntentFilter()
broadcastIntentFilter.addAction(SERVICE_BROADCAST_KEY)
registerReceiver(mIntentActionBroadcastReceiver, broadcastIntentFilter)
}
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
// onStart
}
private val mIntentActionBroadcastReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
// do something
}
}
}
Теперь у меня есть канал уведомлений, где пользователь выполняет определенные действия, это выглядит примерно так.
val notificationBuilder = NotificationCompat.Builder(context, PRIMARY_CHANNEL)
.addAction(getCustomAction(context))
private fun getCustomAction(context: Context): NotificationCompat.Action {
val actionIntent = Intent(context, MyService::class.java).apply {
action = NOTIFICATION_ACTION_CUSTOM
}
val pendingIntent = PendingIntent.getService(context, 0, actionIntent, 0)
return NotificationCompat.Action(R.drawable.ic_custom_48dp, "", pendingIntent)
}
Когда пользователь щелкает действие в уведомлении, он, кажется, снова вызывает MyService onStartCommand, таким образом, определенное состояние моей службы нарушено.
Вместо этого можно ли отправить намерение вещания с getCustomAction()
, получить его в службе и что-то с ним сделать?
Возможно ли что-то подобное в getCustomAction()
?
val intent = Intent(SERVICE_BROADCAST_INTENT)
intent.putExtra(SERVICE_BROADCAST_KEY, NOTIFICATION_ACTION_CUSTOM)
LocalBroadcastManager.getInstance(this).sendBroadcast(intent)