Android установить расположение и BOOT_COMPLETED

У меня есть приложение для Android, которое использует AlarmService. Согласно документации, я не должен позволять устанавливать / перемещать это приложение на внешнее хранилище. Пользователи, однако, не понимают этого (возможно, из-за очень небольшого количества внутреннего хранилища на некоторых устройствах) - и требуют опцию установки на внешнее хранилище (с помощью низких оценок).

Мне нужно заново зарегистрировать аварийные сигналы при загрузке и прослушать BroadcastReceiver для BOOT_COMPLETED. Это, однако, не вызывается для приложений, установленных на SD-карте, так как это еще не установлено, тогда намерение запускается. К сожалению, EXTERNAL_APPLICATIONS_AVAILABLE также нет - поэтому я не получаю уведомления о том, что мы загрузились, и, следовательно, у меня нет изменений для повторной установки сигналов тревоги.

Есть ли способ обойти это затруднительное положение?

4 ответа

Решение

Извините, нет, это не то, что вы можете обойти. Вот почему мы говорим, что вы не должны помещать приложения на SD-карту, которые делают такие вещи.

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

пользователи хотят этого, если приложение занимает всего несколько МБ

Когда-нибудь пользователи могут также решить, что они хотят, чтобы ваше приложение было розового или в 3D, или иметь возможность взаимодействовать со своей посудомоечной машиной Kenmore, что ни в коем случае не может быть в ваших планах. Итак, я предлагаю вам придумать систему для общения с вашими клиентами, чтобы объяснить, почему ваше приложение не розовое, не трехмерное, не готовое к мытью в посудомоечной машине и не хранится во внешнем хранилище.

Теперь я с готовностью признаю, что Android Market должен предоставлять больше помощи для такого рода каналов связи (например, ответы на комментарии).

Придумывать длинные технические объяснения (== оправдания) - просто неправильный ответ

Добро пожаловать на ваше мнение. Надеюсь, тебе нравится розовый.

О чем они думали, проектируя службу сигнализации, которая работает только до следующей перезагрузки?

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

Что ж, даже такой "мощный" телефон, как HTC Desire, поставляется только с 150 МБ пользовательского пространства (en.wikipedia.org/wiki/HTC_Desire). Это жалко.

Не стесняйтесь обсуждать это с HTC. Я не верю, что они регулярно читают Stackru.

Решение Android для установки приложений здесь в лучшем случае нерешительное

Нет, он, между прочим, принципиально ограничен природой режима USB Mass Storage Mode. Долгосрочное решение состоит в том, чтобы устранить разделение между внутренним и внешним хранилищем, процесс, который уже осуществляется в Honeycomb.

и пользователи (обычные люди, использующие телефоны, которые не являются инженерами) остаются полностью необразованными в пользовательском интерфейсе

Я согласен, что можно сделать еще кое-что, чтобы помочь пользователям понять, почему приложение не может быть перемещено во внешнее хранилище.

Любопытно, почему команда Android добавила опцию "перейти на SD-карту" прямо в настройках приложения, поскольку это не очень работает для большинства приложений, но создает необоснованный предварительный срок для функций, которые не могут быть реализованы на Платформа

Это в основном для игр, основной категории приложений, которые имеют значительные потребности в памяти. Им также, как правило, не нужны функции, для которых приложения на внешнем хранилище не работают особенно хорошо.

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

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

В худшем случае: создайте второе приложение (которое будет достаточно легким, чтобы не иметь значения, что его нельзя установить на SD-карту), которое будет прослушивать событие BOOT_COMPLETED при запуске и будет запускать ваше основное приложение, когда оно имеется в наличии. Скажите пользователю, что он должен установить это, чтобы ваше приложение работало, когда оно установлено на SD-карту.

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

Я понимаю, что это ужасный вариант, но он будет работать, если вы в отчаянии.

Другие вопросы по тегам