Есть несколько факторов, которые могут повлиять на это:
Приложение должно явно заявить, что его предпочтительно / можно установить на SD-карту.
Начиная с уровня API 8, вы можете разрешить установку приложения на внешнее хранилище (например, SD-карту устройства). Это дополнительная функция, которую вы можете объявить для своего приложения с помощью android:installLocation
атрибута manifest. Если вы не объявите этот атрибут, ваше приложение будет установлено только во внутреннем хранилище и не может быть перемещено во внешнее хранилище .
(Акцент мой)
Приложение настроено на компиляцию с использованием API 7 (Froyo) или ниже, который не поддерживает установку приложения на SD-карту (даже если оно установлено на GingerBread или более новых устройствах).
Возможность установки приложения на внешнее хранилище - это функция, доступная только на устройствах с API уровня 8 (Android 2.2) или выше. Существующие приложения, созданные до API уровня 8, всегда устанавливаются во внутреннее хранилище и не могут быть перемещены во внешнее хранилище (даже на устройствах с API уровня 8) . Однако, если ваше приложение разработано для поддержки уровня API ниже 8, вы можете выбрать поддержку этой функции для устройств с уровнем API 8 или выше и при этом поддерживать совместимость с устройствами, использующими уровень API ниже 8.
(Акцент мой)
Причины, по которым некоторые приложения не желательно устанавливать на SD-карту, заключаются в следующем:
Когда пользователь активирует USB-накопитель для обмена файлами со своим компьютером (или иным образом отключает или удаляет внешнее хранилище), любое приложение, установленное на внешнем хранилище и работающее в данный момент, уничтожается. Система фактически не узнает о приложении до тех пор, пока запоминающее устройство не будет отключено и внешнее хранилище не будет перемонтировано на устройстве. Помимо уничтожения приложения и его недоступности для пользователя, это может привести к более серьезному нарушению работы некоторых типов приложений. Чтобы ваше приложение работало должным образом, вы не должны позволять устанавливать ваше приложение на внешнее хранилище, если оно использует одну из следующих функций, из-за указанных последствий, когда внешнее хранилище отключено:
Сервисы
Ваша работа Service
будет прервана и не будет перезапущена при перемонтировании внешнего хранилища. [...]
Службы сигнализации
Ваши тревоги, зарегистрированные на, AlarmManager
будут отменены. [...]
Способ ввода Двигатели
Ваш IME будет заменен IME по умолчанию. [...]
Живые обои
Ваши живые обои будут заменены живыми обоями по умолчанию. [...]
Виджеты приложений
Ваш виджет приложения будет удален с главного экрана. Когда внешнее хранилище перемонтируется, ваш виджет приложения будет недоступен для выбора пользователем, пока система не перезагрузит домашнее приложение (обычно не до перезагрузки системы).
Менеджеры по работе с клиентами
Ваши учетные записи, созданные с помощью AccountManager
, исчезнут, пока не будет перемонтировано внешнее хранилище.
Адаптеры синхронизации
Ваша AbstractThreadedSyncAdapter
и все функции синхронизации не будут работать, пока не будет перемонтировано внешнее хранилище.
Администраторы устройства
Ваши DeviceAdminReceiver
и все его возможности администратора будут отключены, что может иметь непредсказуемые последствия для функциональности устройства, которые могут сохраняться после перемонтирования внешнего хранилища.
Приемники вещания слушают "загрузка завершена"
Система передает ACTION_BOOT_COMPLETED
широковещательную рассылку до того, как внешнее хранилище подключено к устройству. Если ваше приложение установлено на внешнем хранилище, оно никогда не сможет получить эту трансляцию.
Если ваше приложение использует какие-либо из перечисленных выше функций, вы не должны разрешать его установку на внешнее хранилище.
(Некоторые части отредактированы. Они объясняют, что разработчики должны сделать, чтобы их приложения работали должным образом после переустановки SD-карты.)
Примечание : этот ответ служит общей информацией «Почему некоторые приложения не могут быть перемещены на SD - карту»
Источник: Android Разработчики: App Install Location .