ComponentName name = new ComponentName(, );
(name, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
不可用状态:COMPONENT_ENABLED_STATE_DISABLED
可用状态:COMPONENT_ENABLED_STATE_ENABLED
默认状态:COMPONENT_ENABLED_STATE_DEFAULT
flags:行为标签,值可以是DONT_KILL_APP或者0。 0说明杀死包含该组件的app
ComponentName 可以是包名类名
adb 手动设置:
adb shell pm enable 包名/类名
例如:adb shell pm enable /.MainActivity
pm clear [--user USER_ID] PACKAGE
pm enable [--user USER_ID] PACKAGE_OR_COMPONENT
pm disable [--user USER_ID] PACKAGE_OR_COMPONENT
pm disable-user [--user USER_ID] PACKAGE_OR_COMPONENT
pm disable-until-used [--user USER_ID] PACKAGE_OR_COMPONENT
pm hide [--user USER_ID] PACKAGE_OR_COMPONENT
pm unhide [--user USER_ID] PACKAGE_OR_COMPONENT
包名类名获取:
//获取其他app的servcie
List<ResolveInfo> infos2 = (intent2, 0);
//获取其他app的广播
List<ResolveInfo> infos3 = (intent2, 0);
//获取其他app的Activity
List<ResolveInfo> infos2 = (intent2, 0);
//获取其他app的ContentProvider
List<ResolveInfo> infos3 = (intent2, 0);
其中intent2 里面可以设置 action\packageName等过滤
而且,禁用信息可以在 /data/system/users/0/ 目录下查看,如下:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<package-restrictions>
<pkg name="" stopped="true" nl="true" enabled="3">
<enabled-components>
<item name="" />
<item name="" />
</enabled-components>
<disabled-components>
<item name="" />
<item name="" />
<item name="" />
</disabled-components>
</pkg>
<pkg name="" stopped="true" nl="true" />
<pkg name="">
<disabled-components>
<item name="" />
</disabled-components>
</pkg>
<pkg name="" stopped="true" nl="true" />
<pkg name="." stopped="true" />
<pkg name="">
<disabled-components>
<item name="" />
</disabled-components>
</pkg>
<pkg name="" stopped="true" nl="true" />
<pkg name="" stopped="true" nl="true" />
<pkg name="">
<disabled-components>
<item name="" />
</disabled-components>
</pkg>
<preferred-activities />
<persistent-preferred-activities />
<crossProfile-intent-filters />
</package-restrictions>
里面包含了包名、组件、状态等信息,其中 enabled=3时等于禁用状态,1时等于状态正常。
上述文件描述了app的组件状态信息,app状态信息,是否冻结等。