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 это еще важнее.