我正在尝试向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操作。有什么想法吗?
答案 0 :(得分:1)
这个<intent-filter>
不太可能是你想要的。这将使用MAIN
类别回复SET_ALARM
或LAUNCHER
。 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不开心。