Невозможно переместить несколько приложений на SD-карту

У меня есть такие приложения, как Any.DO и AK Notepad , установленные на моем телефоне Samsung Galaxy Y Android 2.3.6. Я пробовал Titanium Backup и App 2 SD (переместить приложение на SD), но до сих пор не могу вообще переместить эти приложения на SD-карту. В чем дело? Может ли кто-нибудь помочь мне здесь?

Что произойдет, если вы попытаетесь переместить приложения на SD?
@Flow, посмотри мой ответ. Оба приложения имеют встроенные виджеты, поэтому они, скорее всего, не поддерживают App2SD.
Если вы хотите переместить свое приложение на SD-карту из-за «недостаточного внутреннего хранилища», проверьте android.stackexchange.com/questions/30620/…

Ответы (3)

Приложение должно явно поддерживать App2SD, иначе вы не сможете переместить его на карту. Есть несколько причин, по которым приложение может его не поддерживать:

  • с помощью виджетов (оба упомянутых приложения, кажется, попадают в эту категорию. AK Notepad: «Закрепить заметки на главном экране»; Any.DO: «Вы даже можете добавить наш виджет на рабочий стол»)
  • запуск службы

Поскольку SD-карта будет недоступна при подключении к компьютеру, обе вещи будут «зависать» (поскольку они больше не смогут получить доступ к своим данным и т. д.). Конечно, всегда есть вероятность, что разработчику просто все равно, и в этом случае вам следует связаться с ним и спросить.

Я столкнулся с интересным случаем - приложение, f-droid.org/repository/browse/?fdid=com.nanoconverter.zlab , которое имеет дефект - оно предлагает фоновую службу и виджет, но моя 4.2.2 может переместить его в SD-карта (потеря этой функциональности, конечно).

На это могут повлиять некоторые факторы:

  1. Приложение должно явно заявить, что его предпочтительно/возможно установить на SD-карту.

    Начиная с уровня API 8, вы можете разрешить установку вашего приложения на внешнее хранилище (например, на SD-карту устройства). Это необязательная функция, которую вы можете объявить для своего приложения с помощью android:installLocationатрибута manifest. Если вы не объявите этот атрибут, ваше приложение будет установлено только во внутреннюю память и не может быть перемещено во внешнюю память .

    (выделено мной)

  2. Приложение настроено на компиляцию с использованием 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: место установки приложения .

Определенно можно переместить приложения на SD-карту и при этом они будут отлично работать (включая виджеты и службы) через Link2SD.

РЕДАКТИРОВАТЬ: Для использования этого метода требуется корневой доступ на вашем телефоне, а также необходимо, чтобы ваша SD-карта была отформатирована, чтобы на ней был второй раздел.

Чтобы избежать избыточной публикации ответа здесь, я просто дам ссылку на него: https://android.stackexchange.com/a/145591/167026