在广播接收器中处理android.intent.category.HOME

时间:2015-03-24 11:55:35

标签: android android-intent android-activity

我正在尝试在广播接收器中找到一种处理android.intent.category.HOME的方法,该按钮在按下主页按钮时发送另一个自定义意图。

此时我设法只添加一个Activity作为Google Now Launcher的替代品,方法是将其添加到清单中:

       <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.HOME" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

但我不想更改默认的Home应用程序,我只是让Google Now Launcher做了什么,并且也被告知了这个事件,但似乎如果我的APP没有被标记为启动器我我无法通过动作接收广播:MAIN和类别:HOME。

你能帮我找一个解决方案吗?

1 个答案:

答案 0 :(得分:4)

Android中的Intent系统作为准消息总线运行。该总线上有三个独立的通道:

  • 一个频道用于开始活动,例如当用户按下HOME按钮时
  • 一个频道用于启动或绑定服务
  • 一个频道用于广播

启动邮件的应用是选择频道的应用,而不是您作为潜在收件人的应用。在系统级别,按HOME将触发startActivity()调用以调出主屏幕。您不能自己决定startActivity()应该触发广播或启动服务。

  

似乎如果我的APP没有标记为启动器,我无法通过操作收到广播:MAIN和类别:HOME

即使您的活动被标记为发射者&#34;您无法在MAIN中收到HOME / BroadcastReceiver的邮件,因为HOME按钮会启动活动。