0

以下是我的 AndroidManifest 的代码

// 广播接收器

<receiver android:name="com.broadcastreceivers.ApplicationInstalled" >
    <intent-filter android:priority="101" >
        <action android:name="android.intent.action.SIG_STR" />
    </intent-filter>
</receiver>

// 启动器活动

<activity
    android:name="com.activity.MasterActivity"
    android:label="@string/app_name"
    android:noHistory="true" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

我不想在我的应用程序中有 Activity,因此当我从我的 AndroidManifest.xml 中评论或删除活动声明部分时,它会停止触发广播接收器事件以进行信号更改。但是当我如上所述声明活动时,它工作正常。

我的问题是为什么我们在项目中需要 Activity ?

编辑:我目前使用的是 Android 2.3.3 版本。

4

1 回答 1

2

问题:

从 3.1 开始,当安装应用程序时,它们处于一种stopped状态,因此在用户明确启动它们之前它们将无法运行。

因此,当应用程序首次安装时,系统会完全忽略它们,除非用户手动启动某些东西:最有可能的是单击启动器活动或添加应用程序小部件。

一直依赖于在没有用户干预的情况下获得某种系统广播的开发人员将需要针对 Android 3.1 及更高版本调整他们的应用程序。

解释:

正如您的问题中提到的,当您声明Activity上面的 with时<intent-filter>,它将启动应用程序,所以现在您的应用程序将处于active状态而不是状态stopped。这就是为什么,现在它可以接收broadcasts

参考:

CommonsWare 的博文

我希望它会有所帮助!

于 2013-10-23T05:11:59.467 回答