我将服务构建到库中,服务将调用setForeground
使其自身显示在状态栏上。
然后我将此服务库添加到另一个 app 中,当 app 启动服务时,它将传递其活动名称(例如: com.example .abcd.main )作为服务的String
。
我希望当用户点击状态栏上的通知时,它可以启动应用的Acitivity
。
关于服务PendingIntent
的{{1}}中的意图,我将其设置如下:setForeground
但是当用户点击通知时intent.setAction("com.example.abcd.main")
没有按照需要启动。
我在清单中宣布Activity
,我不知道为什么。
提前致谢。
答案 0 :(得分:0)
如果要在类名的情况下启动显式活动,则需要使用setClassName()
,而不是setAction()
。
意图中的主要信息是:
- 操作 - 要执行的常规操作,例如ACTION_VIEW,ACTION_EDIT,ACTION_MAIN等。
- 数据 - 要操作的数据,例如联系人数据库中的人员记录,表示为Uri。
(...)
除了这些主要属性外,还有很多 您还可以包含意图的辅助属性:
- 组件 - 指定要用于intent的组件类的显式名称。通常这是通过观察另一个来确定的 意图中的信息(动作,数据/类型和类别)和 将其与可以处理它的组件进行匹配。如果这个属性 设置然后没有执行任何评估,并且此组件是 完全按原样使用。通过指定此属性,所有其他属性 意图属性变为可选。
但是,将Class<?>
引用本身,甚至是完整的Intent传递给服务是不是更简单? (Intents是Parcelable,因此如果您使用start命令启动服务,它们可以作为另一个Intent的额外内容发送。)