Sobes.tech
Middle

Šta je PendingIntent?

sobes.tech АИ

Одговор од АИ

PendingIntent predstavlja token koji omogućava drugoj aplikaciji da izvrši deo koda u ime vaše aplikacije sa vašim dozvolama.

Koristi se za:

  • Obaveštenja (pokretanje aktivnosti kada se klikne na obaveštenje).
  • Widgete radne površine (obrada klikova korisnika).
  • Planirane usluge (ponovljivi zadaci sa AlarmManager-om).

Glavne razlike u odnosu na običan Intent:

  • PendingIntent se prenosi drugoj aplikaciji.
  • PendingIntent čuva dozvole originalne aplikacije.

Tipovi PendingIntent:

  • getActivity(): za pokretanje Activity.
    // Kreiranje PendingIntent za pokretanje Activity
    val intent = Intent(context, TargetActivity::class.java)
    val pendingIntent = PendingIntent.getActivity(context, 0, intent, 0)
    
  • getService(): za pokretanje Service.
    // Kreiranje PendingIntent za pokretanje Service
    val intent = Intent(context, MyService::class.java)
    val pendingIntent = PendingIntent.getService(context, 0, intent, 0)
    
  • getBroadcast(): za slanje broadcast poruke.
    // Kreiranje PendingIntent za slanje Broadcast
    val intent = Intent("MY_ACTION")
    val pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0)
    

Zastavice PendingIntent utiču na ponašanje:

Zastavica Opis
FLAG_ONE_SHOT PendingIntent se može koristiti samo jednom.
FLAG_NO_CREATE Ako PendingIntent ne postoji, nemojte ga kreirati, vratite null.
FLAG_CANCEL_CURRENT Ako već postoji PendingIntent sa istim Intentom, otkažite ga i kreirajte novi.
FLAG_UPDATE_CURRENT Ako već postoji PendingIntent sa istim Intentom, ažurirajte njegove Extra podatke.
FLAG_IMMUTABLE PendingIntent ne može biti izmenjen od strane drugih aplikacija (preporučuje se).

Prilikom korišćenja PendingIntent, važno je navesti jedinstvene kodove zahteva (drugi argument u metodama getActivity, getService, getBroadcast) da biste ih razlikovali.