625 votes

Qu'est-ce qu'un PendingIntent Android ?

Je suis un nouveau venu sur Android. J'ai lu la documentation Android mais j'ai encore besoin de quelques éclaircissements. Quelqu'un peut-il me dire ce qu'est exactement un PendingIntent est ?

1023voto

Lie Ryan Points 24517

A PendingIntent est un jeton que vous donnez à une application étrangère (par ex. NotificationManager , AlarmManager Écran d'accueil AppWidgetManager ou d'autres applications tierces), qui permet à l'application étrangère d'utiliser les autorisations de votre application pour exécuter un code prédéfini. .

Si vous donnez une intention à l'application étrangère, elle exécutera votre demande d'autorisation. Intent avec ses propres permissions. Mais si vous donnez à l'application étrangère PendingIntent cette application exécutera votre Intent en utilisant l'autorisation de votre application.

5 votes

À l'exception des notifications, où avez-vous vu l'utilisation de pendingIntents ? Je pense avoir vu seulement les notifications l'utiliser...

0 votes

@LieRyan oh désolé pour cela. puis-je s'il vous plaît supprimer le post que j'ai écrit (et vous le vôtre) ? aussi, connaissez-vous d'autres classes qui utilisent PendingIntent ?

14 votes

@LieRyan cette réponse est meilleure que l'explication de developer.google à propos de pendingintent merci pour cela

270voto

Shakeeb Ayaz Points 2099

PENDINGINTENT

A PendingIntent spécifie une action à entreprendre dans le futur. Il vous permet de transmettre un futur Intent à une autre application et de permettre à cette dernière d'exécuter cet Intent comme si elle disposait de l'attribut same permissions as your application Il s'agit d'un jeton que vous donnez à une application étrangère et qui permet à cette dernière d'utiliser les autorisations de votre application pour exécuter un code prédéfini.

En donnant un PendingIntent à une autre application, vous lui accordez le droit d'effectuer l'opération que vous avez spécifiée comme si l'autre application était vous-même (avec les mêmes autorisations et la même identité). En tant que tel, you should be careful about how you build the PendingIntent : souvent, par exemple, le nom du composant de l'intention de base que vous fournissez sera explicitement défini comme l'un de vos propres composants, afin de garantir qu'il est finalement envoyé là et nulle part ailleurs.

Il s'agit d'une action d'intention que vous souhaitez réaliser, mais à un moment ultérieur. Pensez-y comme si vous mettiez un Intent sur la glace. La raison pour laquelle il est nécessaire est qu'un Intent doit être créé et lancé à partir d'une base de données valide. Context dans votre application, mais il y a certains cas où l'un d'entre eux n'est pas disponible au moment où vous voulez exécuter l'action parce que vous êtes techniquement en dehors du contexte de l'application (les deux exemples les plus courants sont le lancement d'une activité à partir d'une notification ou d'une BroadcastReceiver En créant un PendingIntent que vous voulez utiliser pour lancer, par exemple, une activité alors que vous avez l'icône de l'activité. Context pour le faire (depuis l'intérieur d'une autre activité ou d'un autre service)

INTENT

Les intentions sont le mécanisme de messagerie standard d'Android qui exprime l'intention de l'utilisateur d'effectuer certaines tâches. Ils vous permettent d'interagir avec d'autres composants définis par vous ou par le système d'exploitation Android.

Exemple de diffusion

  1. un message
  2. Démarrer la caméra
  3. Démarrer un service
  4. Lancer une activité
  5. Afficher une page web ou une liste de contacts
  6. Composer un numéro de téléphone ou répondre à un appel téléphonique

    Ils sont utilisés dans les deux sens

1) par vous pour appeler un composant

2) par le système pour vous informer d'un événement.

Les intentions sont de deux types- Explicite y Implicite

Intention explicite : Lorsque votre application sait quel composant appeler pour effectuer une action donnée.

Intention implicite : Lorsque votre application ne sait pas quel composant peut exactement réaliser l'action que vous souhaitez. Par exemple, si vous dites simplement que vous voulez afficher une URL, le système décide du composant qui réalisera cette intention.

56voto

Samuh Points 16564

Un Pending Intent est un jeton que vous donnez à une application pour qu'elle exécute une action en votre nom. indépendamment de que votre processus de candidature soit vivant ou non.

Je pense que la documentation est suffisamment détaillée : Documents sur les intentions en suspens .

Il suffit de penser aux cas d'utilisation des intentions en attente (diffusion d'intentions, programmation d'alarmes) pour que la documentation devienne plus claire et significative.

0 votes

Je pense que l'intention est aussi une sorte de jeton que nous donnons à une autre application pour qu'elle effectue une action au nom de notre application. Donc, la seule différence entre une intention en attente et une intention est la durée de vie du processus de notre application ?

31voto

Arun P Points 111

L'intention en suspens est une intention qui commencera à un moment donné dans le futur. Une intention normale démarre immédiatement lorsqu'elle est transmise à startActivity(Intent) o StartService(Intent) .

11voto

srinu Points 81

Un PendingIntent est un jeton que vous donnez à une autre application (par exemple, le gestionnaire de notifications, le gestionnaire d'alarmes ou d'autres applications tierces), qui permet à cette autre application d'utiliser les permissions de votre application pour exécuter un morceau de code prédéfini. Pour effectuer une diffusion via une intention en attente, il faut obtenir un PendingIntent via PendingIntent.getBroadcast(). Pour effectuer une activité via une intention en attente, vous recevez l'activité via PendingIntent.getActivity().

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X