Как стать автором
Обновить

Комментарии 43

Спасибо, опробую сегодня на своем isc4. Хотя в наш век хочется иметь более простой тумблер для переключения.
А это относится ко всем аппаратам? Или только к HTC?
К сожалению проверить на других аппаратах кроме HTC возможности нет, но Вы ничего не потеряете если попробуете )
Телефон LGP500:
Установил драйвер
Установил JDK и Android SDK
Подключил телефон в режиме Debugging
Выполнил необходимые команды (только у меня в приглашении ком.строки был символ $. Не знаю, о чем это говорит)

Результат: Не работает :(
Ну, всмысле, не активировалась кнопка Move to SD
Скажите, а кнопка заработала?
А ребутнули?
Это фишка самого Android, начиная с Fryo.
А кто-нибудь знает, как выпилить навсегда из памяти HTC стандартные приложения типа Facebook, Карты, GMail, Google Talk, которыми никогда не пользуешься?
НЛО прилетело и опубликовало эту надпись здесь
Забыл дописать… чтобы без рута :)
Без рута увы
ну а вот если их описанным способом переместить на карту, а потом с карты просто удалить физически?
Это не распространяется на встроенные приложения.их удалять только с рутом
На HTC такая фишка не пройдет, перво наперво нужно сделать S-OFF, так как папка system по умолчанию в режиме ro.
GTalk удалить не получится, ибо не будет работать маркет тогда.
Если сервис — да. Если удалить только IM, Маркет продолжит работать без проблем. Говорю как человек, удаляющий часть системных приложений сразу после получения доступа.
Да, вы правы. Лишь без GTalkService не будет работать.
Без рута никак.
В Андройд 4 появилась возможность их индивидуально отключить (disable), что убирает все их ярлыки и в списке программ сортирует в конец с припиской «отключено».

Подробно тут.
Это возможность года 2 назад уже была (точнее с выходом android 2.2 и выше).
С выходом android 2.2 и выше появилась возможность перемещать стандартными средствами на карту но при условии что эту возможность разработчики перемещаемого приложения допускают. Об этом я упоминал в статье. А мой способ позволяет перемещать все кроме служебных, независимо от того разрешили разработчики или нет
А мой способ позволяет перемещать все кроме служебных
Извините, Ваш? Достаточно сформулировать нужный запрос и результат получится выше ожидаемого.
Сработало только как pm setInstallLocation 2
При pm SetInstallLocation 2 выводило ошибку, в которой и было правильное написание…
(wildfaer s если это имеет значение)
Спасибо за замечание, поправил
Пара замечаний: во-первых, способ работает не только для аппаратов HTC. Поэтому на первом шаге надо ставить драйвер правильного производителя (не думаю, что мой LG будет работать через ваш драйвер).

Во-вторых, у этого способа есть забавный глюк (по крайней мере, в андроиде 2.2.2), о котором, наверное, стоит знать.

Берем приложение с виджетами. Устанавливаем без вашего твика — в память аппарата. Виджеты работают. Переносим штатными средствами на карту (если разработчик не запретил перенос) — виджеты перестают работать (пропадают из списка доступных виджетов). Пока все нормально — так и было задумано, чтобы виджеты нельзя было запускать с карты, иначе они упадут, если ее отмонтировать.

Теперь ставим InstallLocation в 2. Устанавливаем то же самое приложение на карту — виджеты работают. Но падают, если карту убрать. Пытаемся перенести приложение во внутреннюю память — виджеты пропадают из списка доступных.

Судя по всему, это глюк ОС, которая вместо простой проверки карта-или-память начинает вычислять что-то сложное из прописанного в манифесте места установки, реального места установки (перемещалось приложение вручную или нет) и т.п. Но глюк временами неприятный. Я в своем аппарате постоянно держу InstallLocation=2, поскольку памяти там мало. Но иногда приходится переключаться назад в 0 или 1, чтобы установить какое-нибудь приложение, иначе начинаются глюки.
а если как-то вернуть состояние перед командой «InstallLocation 2»? Что означает 2?
В статье же сказано: ноль — использовать место по выбору системы (обычно внутренняя память). 1 — ставить во внутреннюю память. 2 — на карточку. Все это работает только если автор программы не указал явно, куда ее надо ставить. Переключать этот параметр можно сколько угодно — мне так и приходится делать. Программы без виджетов ставлю с двойкой, с виджетами — с нулем.
Это не глюк ОС, это нормальное поведение ОС. Виджиты не работают при перемещении приложения на карту памяти, вне зависимости от того разрешил или запретил перенос разработчик.
Если вы внимательно перечитаете то, что я написал, то поймете, что виджеты не работают при переносе на карту только если InstallLocation равно 0 или 1. Если его выставить в 2 (установка по умолчанию на карту), то работать они будут именно с карты, а из внутренней памяти — нет. На мой взгляд, это именно баг. Возможно, в более новых версиях его исправили.
Наверное баг, потому что в 2.2, 2.3 и 2.3.4 (сборки cyanogenmod) такого точно не было.
Не знаю, как в циане, а в родной прошивке LG с версией 2.2.2 это присутствует. Такое ощущение, что вы из моего комментария прочитали всего пару слов.
Вот из официального описания:

App Widgets
Your App Widget will be removed from the home screen. When external storage is remounted, your App Widget will not be available for the user to select until the system resets the home application (usually not until a system reboot).

По этой причине, виджеты, сервисы, живые обои, име и тд, не могут быть перенесены на внешнюю карту.
Еще один писатель-не-читатель. :) Если InslallLocation равен 2, то карта и внутренняя память меняются местами. Приложение устанавливается на внешнюю карту и система рарешает использовать виджеты прямо с нее. Но если вы потом перенесете приложение во внутреннюю память, андроид больше не разрешит вам пользоваться этими виджетами.
Это очень плохой способ. Приложения, которые не рассчитаны на перенос будут сильно глючить. А потом ещё народ возмущается, вот всё тормозит и глючит.

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

Естественно это актуально для андроид < 4.0.
Да, с рутом легче, но как я уже говорил любой рутованый аппарат лишается гарантии и возможности получения официальных обновлений.
P.S. У меня HTC Explorer ни в одном из перемещенных приложений глюков или нестабильной работы не заметил

Возможности получения официальных обновлений не лишается, если прошивку не обновляли, а рут был получен с помощью локального эксплоита.
Маленький howto для Linux (драйвера от HTC — ненужны):
1. включаем режим отладки
2. находим в SDK такой путь android-sdks/platform-tools/
3. заходим в шелл

./adb shell
$ pm setInstallLocation 2
$
У мен Samsung Galaxy Ace. Большая часть программ и так ставится на карту. Если вдруг поставил в телефон — то можно переместить на карту. Но некоторые программы не перемещаемые. Кроме стандартных программ типа гмейла, есть еще программы, которые ставятся в телефон и не хотят перемещаться, ну например instagram. Этот способ поможет?
В шаге третьем при запуске шелла командная строка выдает error:device not found.
Все описанные условия были соблюдены. В чем может быть дело?
Избавил себя от необходимости устанавливать SDK и HTC Sync, установив на аппарат эмулятор терминала и в нем набрав следующее:
su bash
Тут телефон запросил у меня права суперюзера. Я ответил согласием
pm setInstallLocation 2
Затем подождал 5 секунд, нажал кнопку понижения громкости и «C» на клавиатуре телефона. После этого набрал
pm getInstallLocation
Получил ответ, что значение равняется двум. Обрадовался, закрыл эмулятор терминала, устанавливаю приложения на карточку(:
Аппарат — WildFire S с родной прошивкой
1. На телефоне должна стоять галочка «Настройки» — «Для разработчиков» — «Отладка по USB»

2. Если adb shell выдаёт «device not found», возможно, достаточно будет просто перезагрузить компьютер: у меня, например, на ZTE V790 для устройства ZTE Composite ADB Interface установились драйвера, но заработало оно только после перезагрузки компьютера. Список устройств, которые видит adb, можно посмотреть командой adb devices.

3. В версии SDK 20130522 уже не «pm setInstallLocation 2», а «pm set-install-location 2».
root@j3x3g:/ # pm set-install-location 2
root@j3x3g:/ # pm get-install-location
2[external]
root@j3x3g:/ # reboot

Samsung SM-J320H — не слушается — устанавливает в телефон :(
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории