Выполнить функцию в PendingIntent - PullRequest
0 голосов
/ 27 сентября 2019

Я хочу выполнить асинхронный вызов в моем Firefase Firestore в моем PendingIntent:

MyService.kt

override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {

    /** Intent */
    val intent = Intent(this, MainActivity::class.java)
    val pendingIntent = PendingIntent.getActivity(this, 0, intent, 0)
    val action = NotificationCompat.Action(R.drawable.cancel, "Cancel", pendingIntent)

    val notif = NotificationCompat.Builder(this, channelId).apply {
        setSmallIcon(R.drawable.logo)
        setContentTitle(title)
        setPriority(NotificationCompat.PRIORITY_LOW)
        setColor(ContextCompat.getColor(this@MyService, R.color.colorPrimaryDark))
        setColorized(true)
        addAction(action)
    }.build()

    startForeground(1, notif)

    return START_NOT_STICKY
}

Когда нажата кнопка action на моей службе переднего плана, яхочу выполнить это:

val db = FirebaseFirestore.getInstance()
db.collection("objs").document(id).delete()

вместо перехода на мой MainActivity.Я хочу, чтобы вызов выполнялся в фоновом режиме (не открывая мое приложение при нажатии действия).

Возможно ли это?

1 Ответ

1 голос
/ 27 сентября 2019

Вы можете использовать BroadcastReceiver для выполнения вашего действия

    val intent = Intent(this, YourBroadCastReceiver::class.java)
    val pendingIntent = PendingIntent.getBroadcast(
        this,
        0,
        intent, 
        0
    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...