Отключение загруженного приложения

В Android вы можете отключить встроенное приложение, чтобы оно не запускалось и исчезало из списка приложений. Но он все равно останется на телефоне и его можно будет легко снова включить.

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

Возможно, есть какой-то скрытый способ сделать это?

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

Вы можете использовать pmкоманду либо adbиз эмулятора терминала, либо из эмулятора терминала, чтобы включить или отключить любое приложение (пакет) по имени пакета. pmявляется сокращением от диспетчера пакетов и может делать больше, чем просто устанавливать, отключать или перечислять пакеты.
@GiantTree кажется pm disableответом. Почему бы вам не опубликовать это как правильный ответ, чтобы я мог принять его?

Ответы (1)

Требуется рут (по крайней мере на 6.0.1). Системные разрешения (uid <= 1000) требуются, но adbвыполняются от имени пользователя 2000.

Менеджер пакетов ( pm) сделает именно то, что вы хотите.

В adbэмуляторе терминала или в эмуляторе терминала (оба требуют root), запустите pmкоманду, и вы увидите ее возможности.

Смотрим 2 из них:

  • pm list packages
  • pm disable <package>

pm list packagesперечисляет все установленные пакеты, этот список не отсортирован, но если вы знаете простой bash, вы можете использовать grepдля поиска подстрок в именах пакетов:

pm packages list | grep googleперечислит все пакеты с " google " в имени, фактически возвращая только приложения Google:

Пример вывода:

package:com.google.android.apps.unveil
package:com.google.android.gsf.login
package:com.google.android.apps.translate
package:com.google.android.backuptransport
package:com.google.android.apps.books
package:com.google.android.apps.giant
package:com.google.android.ears
package:com.google.android.keep
package:com.google.android.talk
package:com.google.android.apps.ads.publisher
package:com.google.android.apps.youtube.music
package:com.google.android.play.games
package:com.google.android.apps.magazines
package:com.google.android.apps.adm
package:com.google.android.inputmethod.latin

pm disable <package name>отключает один указанный вами пакет. Тогда отключение Google Keyboard будет pm disable com.google.android.inputmethod.latin.

Чтобы узнать, какое имя пакета соответствует какому приложению, попробуйте этот URL-адрес: https://play.google.com/store/apps/details?id=<package name>
замените <package name>на имя пакета, который вы хотите проверить.

Вместо использования pmвы можете использовать Titanium Backup, если ваше устройство имеет root-права.

В Titanium Backup вы можете просмотреть все свои приложения, отфильтровать этот список и выбрать приложение, которое хотите отключить или, в случае TB, заморозить .
Однако для этого требуется платная версия Titanium Backup.

+1 отличный ответ. Возможно, вы можете включить дополнительные способы сделать это (для пользователей, которые не хотят работать с терминалом). Например: используйте проводник с привилегиями root и перейдите в папку /data/app. Найдите папку приложения, которое вы хотите отключить, перейдите в нее и измените расширение файла base.apk на base.apk.disabled. Или, если кто-то уже использует Titanium Backup, он может захотеть использовать его. Требуются ли pm disableпривилегии root?
@benjaminS pmтребует как минимум системных разрешений. Запуск из adbбудет работать, но из эмулятора терминала потребуются права root. Я добавляю больше информации к моему ответу.