2017-05-10 1 views
0

BAD peut être utilisé pour envoyer l'intention de diffusion par exemple:Intention semble pas de données, at-il des applications?

adb shell am -a émission com.whereismywifeserver.intent.TEST --es sms_body "test de adb"

où : -a est l'action et -es est la chaîne supplémentaire. Ma pensée est que le paramètre d'action est nécessaire, car il est utilisé par le récepteur d'intention pour recevoir l'intention en utilisant (filtre d'intention). Cependant, je remarque que nous pouvons envoyer l'intention, sans préciser l'action par exemple:

adb shell am diffusion -n com.google.android.deskclock/com.android.deskclock/com.android.deskclock.AlarmInitReceiver

Pourquoi cela est-il possible? N'est-ce pas une intention vide? et toutes les applications d'une telle chose?

Répondre

1

N'est-ce pas une intention vide?

No. -n crée un Intent explicite, qui identifie l'ID d'application (com.google.android.deskclock) et le composant (com.android.deskclock.AlarmInitReceiver). L'utilisation d'un Intent explicite délivre directement le Intent au composant désigné; dans votre cas, via une diffusion.

et toutes les applications d'une telle chose?

explicite Intents sont largement utilisés dans Android, peut-être même plus souvent que sont implicites Intents. Voici quelques exemples:

  • En tapant sur une icône de lancement de l'écran d'accueil (startActivity() avec un explicite Intent)

  • JobService et d'autres classes de services spécialisés (bindService() avec un Intent explicite)

  • ACTION_MY_PACKAGE_REPLACED (sendBroadcast() avec un caractère explicite Intent)