向MainActivity添加意图会导致“找不到启动器活动”

时间:2014-01-06 21:43:46

标签: android android-intent

我正在尝试向Manifest中的MainActivity intent-filter添加一个新操作,如下所示:

    <activity
        android:name="com.packagename.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <category android:name="android.intent.category.LAUNCHER" />

            <action android:name="android.intent.action.MAIN" />
            <action android:name="com.packagename.SET_ALARM" />
        </intent-filter>
    </activity>

但是当我尝试重新安装应用程序时,这导致控制台发出消息“找不到启动器活动”,即使包括MAIN和LAUNCHER操作。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

这个<intent-filter>不太可能是你想要的。这将使用MAIN类别回复SET_ALARMLAUNCHER。 IOW,要使用SET_ALARM,您必须使用:

 new Intent("com.packagename.SET_ALARM").addCategory(Intent.CATEGORY_LAUNCHER);

任何第三方应用都不可能使用这样的Intent。如果这是针对您自己的应用,请使用明确的Intent(例如new Intent(this, MainActivity.class))并彻底摆脱SET_ALARM。当您希望第三方应用能够引用您的组件时,添加自定义操作(然后,只有在您没有为其提供PendingIntent的情况下才能使用)。

如果您确实希望第三方应用程序使用SET_ALARM,您可能需要:

<activity
    android:name="com.packagename.MainActivity"
    android:label="@string/app_name" >
    <intent-filter>
        <category android:name="android.intent.category.LAUNCHER" />

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

        <action android:name="com.packagename.SET_ALARM" />
    </intent-filter>
</activity>

所有这一切,我不太确定为什么Eclipse不开心。