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


9

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


1
Що станеться, якщо спробувати перемістити програми на SD?
Потік

1
@Flow дивіться мою відповідь. В обох додатках інтегровані віджети, тому вони, швидше за все, не підтримують App2SD.
Izzy

Якщо ви хочете перенести свій додаток на sd-карту через "низький внутрішній об'єм", перейдіть на перевірку android.stackexchange.com/questions/30620/…
Sylvain Huard

Відповіді:


7

Додаток повинен явно підтримувати App2SD, інакше ви не можете перемістити його на карту. Є кілька причин, чому програма може не підтримувати її:

  • з використанням віджетів (обидва згадані додатки, схоже, підпадають під цю категорію. AK Notepad: "Прив’язати нотатки до головного екрану"; Any.DO: "Ви навіть можете додати наш віджет на свій домашній екран")
  • запуск послуги

Оскільки sdcard виявиться недоступним під час підключення до комп'ютера, обидві речі "збиваються" (оскільки вони більше не можуть отримати доступ до своїх даних тощо). Звичайно, завжди є можливість розробника просто не хвилюватись - у такому випадку вам слід зв’язатися з ним і запитати.


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

3

На це можуть вплинути деякі фактори:

  1. Додаток повинен чітко заявляти, що бажано / можливо встановити на SD-карту.

    Починаючи з рівня 8 API, ви можете дозволити встановлення вашої програми на зовнішній сховище (наприклад, SD-карта пристрою). Це необов'язкова функція, яку можна оголосити для вашої програми за допомогою android:installLocationатрибута маніфесту. Якщо ви не декларуєте цей атрибут, ваш додаток буде встановлено лише на внутрішній сховище, і він не може бути переміщений до зовнішнього сховища .

    (Наголос мій)

  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 Developers: Location Install Location .


1

Однозначно можна перемістити додатки на SD-карту, і все одно вони працюватимуть ідеально (віджети та сервіси включені) через Link2SD.

EDIT: Використання цього методу вимагає кореневого доступу до вашого телефону, а також потрібна форматування вашої SD-карти, щоб мати на ній другий розділ.

Щоб уникнути зайвої публікації відповіді ще тут, я просто перекину на неї посилання: https://android.stackexchange.com/a/145591/167026

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.