无法从库中定义的状态栏通知启动活动

时间:2014-07-02 03:35:46

标签: android

我将服务构建到库中,服务将调用setForeground使其自身显示在状态栏上。

然后我将此服务库添加到另一个 app 中,当 app 启动服务时,它将传递其活动名称(例如: com.example .abcd.main )作为服务的String

我希望当用户点击状态栏上的通知时,它可以启动应用Acitivity。 关于服务PendingIntent的{​​{1}}中的意图,我将其设置如下:setForeground

但是当用户点击通知时intent.setAction("com.example.abcd.main")没有按照需要启动。 我在清单中宣布Activity,我不知道为什么。

提前致谢。

1 个答案:

答案 0 :(得分:0)

如果要在类名的情况下启动显式活动,则需要使用setClassName(),而不是setAction()

  

意图中的主要信息是:

     
      
  • 操作 - 要执行的常规操作,例如ACTION_VIEW,ACTION_EDIT,ACTION_MAIN等。
  •   
  • 数据 - 要操作的数据,例如联系人数据库中的人员记录,表示为Uri。
  •   
     

(...)

     

除了这些主要属性外,还有很多   您还可以包含意图的辅助属性:

     
      
  • 组件 - 指定要用于intent的组件类的显式名称。通常这是通过观察另一个来确定的   意图中的信息(动作,数据/类型和类别)和   将其与可以处理它的组件进行匹配。如果这个属性   设置然后没有执行任何评估,并且此组件是   完全按原样使用。通过指定此属性,所有其他属性   意图属性变为可选。
  •   

但是,将Class<?>引用本身,甚至是完整的Intent传递给服务是不是更简单? (Intents是Parcelable,因此如果您使用start命令启动服务,它们可以作为另一个Intent的额外内容发送。)