включать/отключать пакеты программно

Как программно включить/отключить весь пакет из системного приложения Android?

В этом сообщении компонент включается/отключается программно, но не весь пакет.

Я хочу добиться того же результата, который достигается командой root pm disable/enable package_name (из оболочки adb -> su).


person Amitai Fensterheim    schedule 11.07.2016    source источник
comment
Вы можете попробовать запустить ту же команду программно. Очевидно, что это будет работать только на рутированном устройстве.   -  person Steve Smith    schedule 30.03.2017
comment
Зачем вам рутированное устройство? Вам просто нужно системное привилегированное приложение.   -  person Chef Pharaoh    schedule 16.08.2017


Ответы (1)


Вы можете сделать это двумя способами:

  1. Используя команду отключения pm:

    Runtime runtime = Runtime.getRuntime();
    runtime.exec("pm disable "+packageName);
    
  2. Использование PackageManager API:

    public abstract void setApplicationEnabledSetting (String packageName, 
                                                       int newState, int flags)
    

Где в параметре newState вы можете передать «COMPONENT_ENABLED_STATE_DISABLED», чтобы отключить приложение, и «COMPONENT_ENABLED_STATE_ENABLED», чтобы включить приложение.

Ссылка: https://developer.android.com/reference/android/content/pm/PackageManager#setApplicationEnabledSetting(java.lang.String,%20int,%20int)

person Sandip Pawar    schedule 14.11.2019