当我设置一个警报由我的接收器在onReceive中拾取然后传递给我的接收意图中的额外内容时,我希望通过我的未决意图传递额外内容,以便我的调度服务选择将其包含在我的通知中 .
例如 . 设置闹钟以提醒我在'y'时间内服用名为'x'的药物 . 我希望在触发警报时在通知中显示名称“x” .
我发现this answer非常有帮助 .
但是,在here中提供的Google Android示例项目调度程序中,它建议如果您的接收方意图包含需要传递给服务的附加内容,请使用setComponent()来指示服务应该处理接收方的意图:
ComponentName comp = new ComponentName(context.getPackageName(),
MyService.class.getName());
// This intent passed in this call will include the wake lock extra as well as
// the receiver intent contents.
startWakefulService(context, (intent.setComponent(comp)));
我引用的答案不是这样做的 .
当onReceive中的组件是服务时,是否只需要使用setComponent?当组件是活动时,这不是必需的吗?
谢谢,山姆 .
1 回答
您链接到的页面上不会显示与此相关的任何内容 .
是的,它确实 . 它通过
Intent
构造函数设置组件 .通过构造函数或
setComponent()
设置组件用于指示这是应该处理操作的组件,从而创建所谓的显式Intent
. 如果未设置组件,则将使用其他条件(如操作字符串和Uri
)来推断应该处理操作的人员(隐式Intent
) .一般而言,在可能的情况下,使用显式
Intent
对象,以及没有<intent-filter>
的组件,以获得最大安全性 .显式与隐式
Intent
对象的使用与所讨论的组件是活动,服务还是接收者没有直接关系 .