2012-03-13 6 views
4

У меня очень странная проблема, и ни один из вопросов, уже на веб-сайте, не имеет ответа или той же проблемы.BOOT_COMPLETED не вызывается на Honeycomb после экспорта

У меня есть приложение, которое получает BOOT_COMPLETED. Я убедился, что он может получить намерение, установив android: installLocation to internalOnly. У меня есть Log.Debug в моем классе OnBoot, подтверждающий, что он был вызван.

У меня есть два устройства, Android 2.2 и сотовый. на Android 2.2, он отлично работает, но Honeycomb ...

  • Если установить приложение на сотовом таблетки с кнопкой «Run» затмения, ONBOOT называется, когда таблетка сапоги.

  • Если я устанавливаю приложение на планшет сотовой связи после экспорта файла * .apk, onBoot никогда не вызывается.

  • Если я устанавливаю приложение на планшет сотовой ячейки после экспорта * .apk-файла, и вручную запускайте операцию перед перезагрузкой, вызывается onBoot.

Похоже, что приложение нуждается в своей деятельности должен быть запущен по крайней мере один раз приемник должен быть зарегистрирован ... Он не чувствует себя хорошо, так как приложение может не иметь никакой активности, и Froyo Безразлично» t работа таким образом ...

+0

Где у вас есть свой вещательный приемник? Закодировано в действии или включено в манифест? –

ответ

9

Это работает, как предполагалось, при условии, что вы используете android 3.1. и позже.

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

Приложения в остановленном состоянии не получают никаких трансляций, в том числе BOOT_COMPLETED.

См Android 3.1. - API Overview - Launch controls on stopped applications

+1

Я не знал об этом, но я думал, что есть что-то, чего я не знал. Большое спасибо за ваш ответ. – Setsuki

+0

@alextsc Спасибо за ваш ответ. Эта новая логика 3.1 применяется только к сторонним приложениям с использованием SDK или к приложению, подписанному с ключом платформы (или есть способ обойти его с помощью разрешения, доступного только для пользователя android.uid.system)? –

+0

@ MathiasLin Я не знаю. Я полагаю, что для системных приложений должно быть какое-то исключение, но это только я угадываю в синий цвет. Я редко работаю вне обычных приложений SDK, поэтому я никогда не проверял это направление. –