Установка внешнего приложения Android (на SD-карту), перезагрузка будильника при повторной установке через ресивер
Я занимаюсь разработкой приложения для Android, которое я хочу разрешить пользователям устанавливать на свою SD-карту (http://developer.android.com/guide/appendix/install-location.html). Тем не менее, приложение имеет несколько сигналов тревоги, созданных с помощью AlarmManager. Согласно руководству разработчика Android (ссылка, которую я включил), если внешний носитель (SD-карта), на котором установлено приложение, отключен, произойдет следующее: "Ваши тревоги, зарегистрированные в AlarmManager, будут отменены. Вы должны вручную перерегистрировать любые тревоги, когда внешнее хранилище перемонтировано."
Есть ли какой-нибудь способ, которым я могу "разбудить" мое приложение, чтобы я мог перепланировать тревоги, когда SD-карта перемонтируется? Может быть, использовать приемник с каким-то фильтром намерений? Я попытался добавить приемник для android.intent.action.MEDIA_MOUNTED, но это не сработало (возможно, из-за того, что приложения, установленные извне, не получают эту намеренную трансляцию, или из-за того, что двоичные файлы приложения не доступны сразу после подключения носителя, и это намерение транслируется?). Любые другие намерения кто-то может предложить? Или какой-то другой способ сделать это? Назначение android.intent.action.EXTERNAL_APPLICATIONS_AVAILABLE (http://developer.android.com/reference/android/content/Intent.html#ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE) похоже на то, что мне нужно, но в документах говорится, что приложения на внешнем носителе не получит этого намерения.
2 ответа
Не думайте, что это возможно, посмотрите, что не работает на SD-карте. Это кажется довольно неубедительным, но без службы, не поддерживающей SD-карту, для мониторинга условий монтирования / размонтирования, что также было бы неубедительно, это не представляется возможным.
Еще одна причина не помещать основное приложение на SD-карту, USB-кабель также может привести к отключению хранилища и т. Д., Если пользователь подключается к компьютеру как жесткий диск.
В настоящее время нет обходного пути для этого: либо принудительно устанавливайте ваше приложение только во внутренней памяти, либо внедряйте дополнительное приложение, которое остается во внутренней памяти и обрабатывает ваши тревоги.