Установка внешнего приложения Android (на SD-карту), перезагрузка будильника при повторной установке через ресивер - PullRequest
6 голосов
/ 13 июля 2011

Я занимаюсь разработкой приложения для 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 ]

0 голосов
/ 13 июля 2011

Не думаю, что это возможно, см. Что не работает на SD-карте Это кажется довольно неубедительным, но без службы без SD-карты для мониторинга условий монтирования / размонтирования, что также было бы неубедительно Это не представляется возможным.

Еще одна причина не помещать основное приложение на SD-карту, USB-кабель также может привести к отключению хранилища и т. Д., Если пользователь подключается как жесткий диск к ПК.

0 голосов
/ 13 июля 2011

В настоящее время обходного пути для этого нет: либо принудительно устанавливайте приложение только во внутренней памяти, либо внедряйте дополнительное приложение, которое остается во внутренней памяти и обрабатывает ваши тревоги.

...