public abstract void setComponentEnabledSetting(ComponentName componentName, int newState, int flags);
componentName:组件名称
newState:组件新的状态,可以设置三个值,分别是如下:
不可用状态:COMPONENT_ENABLED_STATE_DISABLED 【不可见的】
可用状态:COMPONENT_ENABLED_STATE_ENABLED 【可见的】
默认状态:COMPONENT_ENABLED_STATE_DEFAULT 【默认是可见的】
flags:行为标签,值可以是DONT_KILL_APP或者0。 0说明杀死包含该组件的app
实例一:禁止开机启动该组件活动
final ComponentName receiver = new ComponentName(this, Acitivity.class);
final ComponentName receiver = new ComponentName(context, 需要禁止的receiver);
final PackageManager pm = context.getPackageManager();
pm.setComponentEnabledSetting(receiver, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
实例二:实现显示或隐藏应用图标
如果设置一个app的mainActivity为COMPONENT_ENABLED_STATE_DISABLED状态,则不会再launcher桌面中发现该app的程序图标。PackageManager packageManager = getPackageManager();
ComponentName componentName = new ComponentName(this, StartActivity.class);// 获取类名对于的组件名称
int res = packageManager.getComponentEnabledSetting(componentName);// 返回组件的启动状态
if (res == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT
|| res == PackageManager.COMPONENT_ENABLED_STATE_ENABLED) {
// 隐藏应用图标
packageManager.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
} else {
// 显示应用图标
packageManager.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DEFAULT,
PackageManager.DONT_KILL_APP);
}
if(xxxxxx) {如果怎么样,则禁用显示该应用图标
mPackageManager.setComponentEnabledSetting(new ComponentName("imoblife.androidsensorbox","imoblife.androidsensorbox.AndroidSensorBoxActivity"),
PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
}