Android - 没有LAUNCHER活动的[Xoom / Honeycomb]应用程序不起作用

时间:2011-09-08 13:53:28

标签: android broadcastreceiver android-3.0-honeycomb launcher xoom

我有一个没有启动器活动的应用程序,可以从Android 1.5到Android 2.3.4正常运行。它由我的广播接收器启动。但是,在Honeycomb(摩托罗拉Xoom)上,我的广播接收器根本不起作用(它没有捕获任何意图)。如果我在我的清单中添加启动器活动:

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

然后我的应用程序正常工作(广播接收器捕获所有必要的意图并启动我的服务)。

我将非常感谢您的帮助!

2 个答案:

答案 0 :(得分:10)

您是否正在运行Honeycomb 3.1或更高版本?如果是,请查看here。 安装应用程序后,它处于停止状态。首次启动应用程序时,它将退出停止状态。

处于停止状态的应用程序不会被所有广播意图启动。如果广播意图的发送者也想要启动已停止的应用程序,则必须指定Intent.FLAG_INCLUDE_STOPPED_PACKAGES标志。

Intent intent = new Intent(MY_INTENT_ACTION);
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
sendBroadcast(intent);

如果您无法更改发送意图的代码,那么最好的办法就是保留启动器活动。每当用户在安装后启动您的应用程序时,它将被移出停止状态,您将开始接收广播。

请注意,用户可以从设备设置中的管理应用程序将应用程序移回已停止状态。

答案 1 :(得分:4)

在Android 3.1及更高版本上,在用户通过其他方式启动应用程序至少一次之前,不会调用BroadcastReceivers,例如启动活动。

由于用户往往对没有活动的应用程序感到困惑,所以你真的应该首先进行一项活动,如果没有别的话就可以获得在线帮助。使用Android 3.1,这一点更为重要。