首页 文章

在onReceive中包含意图的额外内容时使用setComponent()

提问于
浏览
0

当我设置一个警报由我的接收器在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 回答

  • 0

    但是,在此处提供的Google Android示例项目计划程序中,它建议如果您的接收方意图包含需要传递给服务的附加内容,请使用setComponent()指示服务应处理接收方的意图:

    您链接到的页面上不会显示与此相关的任何内容 .

    我引用的答案不会这样做 .

    是的,它确实 . 它通过 Intent 构造函数设置组件 .

    当onReceive中的组件是服务时,是否只需要使用setComponent,而当组件是活动时,这不是必需的吗?

    通过构造函数或 setComponent() 设置组件用于指示这是应该处理操作的组件,从而创建所谓的显式 Intent . 如果未设置组件,则将使用其他条件(如操作字符串和 Uri )来推断应该处理操作的人员(隐式 Intent ) .

    一般而言,在可能的情况下,使用显式 Intent 对象,以及没有 <intent-filter> 的组件,以获得最大安全性 .

    显式与隐式 Intent 对象的使用与所讨论的组件是活动,服务还是接收者没有直接关系 .

相关问题