Android - приложение [Xoom/Honeycomb] без активности LAUNCHER не работает

У меня есть приложение без активности запуска, которая работает должным образом с Android 1.5 до Android 2.3.4. Запускается моим приемником вещания. Однако на Honeycomb (Motorola 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 ответа

Решение

Вы используете Honeycomb 3.1 или выше? Если да, посмотрите здесь. Когда ваше приложение установлено, оно остановлено. Когда приложение запускается впервые, оно выходит из остановленного состояния.

Приложение в остановленном состоянии не будет запущено всеми вещательными намерениями. Отправитель намерения вещания должен указать флаг Intent.FLAG_INCLUDE_STOPPED_PACKAGES, если он также хочет запускать остановленные приложения.

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

Если вы не можете изменить код, который отправляет намерение, лучше всего сохранить активность запуска. Всякий раз, когда пользователь запускает ваше приложение после установки, оно будет переведено из состояния остановки и вы начнете получать трансляции.

Обратите внимание, что пользователь может перевести ваше приложение обратно в состояние остановки из "Управление приложениями" в настройках устройства.

На Android 3.1 и выше, BroadcastReceivers не будет вызываться до тех пор, пока пользователь не запустит приложение хотя бы один раз другими способами, такими как запуск действия.

Поскольку пользователи, как правило, запутываются в приложениях, у которых нет активности, вам, действительно, следовало бы иметь активность в первую очередь, для онлайн-помощи, если ничего больше. С Android 3.1 это еще важнее.

Другие вопросы по тегам