我最初的问题基本上与此类似:Clearing and setting the default home application
我满意地回答了这个问题,然而,我在答案中难以理解的是你如何在java代码中启用然后禁用清单中的组件?
答案 0 :(得分:18)
通过使用包管理器,您可以启用或禁用在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>
答案 1 :(得分:1)
采用Pawan方法实现更通用的实现:
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);
}