2013-04-02 5 views
0

Мое Android-приложение должно запускаться, когда устройство загружается. Для этого я использовал ACTION_BOOT_COMPLETED с широковещательным приемником. Однако Google ограничил это. Если приложение установлено на SD-карте, широковещательный приемник не получит сообщение ACTION_BOOT_COMPLETED. Они должны быть установлены во внутренней памяти для запуска во время загрузки. Это действительно отстой. Некоторые устройства просто не поставляются с достаточной внутренней памятью. Надеюсь, Google реализует способ установки загрузочных приложений на SD-карты.Установка службы загрузки на Android

В то же время есть ли какое-нибудь другое обходное решение, где я могу загрузить свое приложение, но установить его на SD-карту?

+0

предложения: Вы можете создать приложение, которое просто запустить приложение с SD-карт при загрузке устройства. Теперь поместите это приложение во внутреннюю память устройства. – Lucifer

+0

Но тогда пользователи должны будут загрузить и установить два приложения? Как я могу это предотвратить? – AndroidDev

+0

Найдите, как установить приложение из другого приложения. – Lucifer

ответ

2

Настоящая проблема - при отправке сообщения BOOT_COMPLETE карта SD еще не установлена. Если бы вы вызвали getExternalStorageDir в приемнике, это действительно не сработало - он еще не сможет прочитать диск. Если они не решат сделать это (что сильно замедлит событие завершения загрузки), они не смогут заставить его работать для приложений SD-карт.

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

+0

Android не должен выдавать сообщение BOOT_COMPLETE до тех пор, пока все оборудование не будет завершено. Это просто идиотское программирование от разработчиков-любителей в Google. – AndroidDev

Смежные вопросы