Intent好像没有数据,它有什么应用吗?

Intent seems has no data, does it have any applications?

ADB 可用于发送广播意图,例如:

adb shell am broadcast -a com.whereismywifeserver.intent.TEST --es sms_body "test from adb"

其中:-a 是操作,-es 是额外的字符串。我的想法是 action 参数是必需的,因为意图接收器使用它来接收使用(意图过滤器)的意图。但是,我注意到我们可以在不指定操作的情况下发送意图,例如:

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

为什么这是可能的?不是空想吗?以及这种东西的任何应用程序?

Isn't an empty intent?

没有。 -n 创建一个明确的 Intent,它标识应用程序 ID (com.google.android.deskclock) 和组件 (com.android.deskclock.AlarmInitReceiver)。使用显式 Intent 直接将 Intent 传递给指定的组件;在你的情况下,通过广播。

and any applications of such thing?

显式 Intents 在 Android 中被广泛使用,甚至比隐式 Intents 更常用。示例包括:

  • 点击主屏幕启动器图标(startActivity() 带有明确的 Intent

  • JobService 和其他专门服务 类(bindService() 带有明确的 Intent

  • ACTION_MY_PACKAGE_REPLACEDsendBroadcast() 带有明确的 Intent