Как включить и отключить компонент?

Мой первоначальный вопрос был примерно таким: очистка и настройка домашнего приложения по умолчанию

На этот вопрос, к моему удовлетворению, я отвечаю, но в ответе мне трудно понять, как включить, а затем отключить компонент из манифеста в коде Java?

2 ответа

Решение

С помощью диспетчера пакетов вы можете включить или отключить компонент, объявленный в файле menifest. Существует два флага PackageManager.COMPONENT_ENABLED_STATE_DISABLED для отключения компонента и PackageManager.COMPONENT_ENABLED_STATE_ENABLED для включения компонента.

   PackageManager pm  = getApplicationContext().getPackageManager();
   ComponentName componentName = new ComponentName("com.app",
         ".broadcast_receivers.OnNetworkChangedReceiver");
      pm.setComponentEnabledSetting(componentName,
        PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
        PackageManager.DONT_KILL_APP);

Android манифест:

<receiver android:name=".broadcast_receivers.OnNetworkChangedReceiver"
            android:enabled="true">
        <intent-filter>
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
        </intent-filter>
</receiver>

Принимая подход Павана к более общей реализации:

public static void setComponentState(Context context, String packageName , String componentClassName, boolean enabled)
{
    PackageManager pm  = context.getApplicationContext().getPackageManager();
    ComponentName componentName = new ComponentName(packageName, componentClassName);
    int state = enabled ?  PackageManager.COMPONENT_ENABLED_STATE_ENABLED :  PackageManager.COMPONENT_ENABLED_STATE_DISABLED;
    pm.setComponentEnabledSetting(componentName,
            state,
            PackageManager.DONT_KILL_APP);

}
Другие вопросы по тегам