Как включить и отключить компонент?
Мой первоначальный вопрос был примерно таким: очистка и настройка домашнего приложения по умолчанию
На этот вопрос, к моему удовлетворению, я отвечаю, но в ответе мне трудно понять, как включить, а затем отключить компонент из манифеста в коде 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);
}