我正在浏览PackageManager API。我发现定义了以下常量:
1) GET_DISABLED_COMPONENTS
2) GET_DISABLED_UNTIL_USED_COMPONENTS
3) COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED
4) COMPONENT_ENABLED_STATE_DISABLED_USER
5) COMPONENT_ENABLED_STATE_DISABLED
6) COMPONENT_ENABLED_STATE_DEFAULT
7) COMPONENT_ENABLED_STATE_ENABLED
8) GET_UNINSTALLED_PACKAGES
在阅读documentation时,我看到对于常量5-7,无论在清单文件中如何指定组件,都可以启用/禁用组件。
对于3,文件说:
This application should be considered, until the point where the user actually
wants to use it.
这是什么意思?
4,文件说:
The user has explicitly disabled the application, regardless of what it has
specified in its manifest.
如果此标志与应用程序有关,为什么名称以' COMPONENT' ?用户如何禁用该应用程序?
对于8,文档说:
Flag parameter to retrieve some information about all applications (even
uninstalled ones) which have data directories. This state could have
resulted if applications have been deleted with flag DONT_DELETE_DATA with
a possibility of being replaced or reinstalled in future.
指定DONT_DELETE_DATA标志在哪里?
总而言之,如果有人可以为开发人员解释这些常量的用例,那将会有所帮助。
感谢。
答案 0 :(得分:0)
我在我的一个项目中使用它们。在这里查看。 https://github.com/slightfoot/android-launcher-badges
不确定是否有帮助。
编辑: 你会看到这里使用的大多数标志:AppBadge.java其余的都是非常自我解释的。 The documentation似乎很好地描述了一切。
COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED (在API级别18中添加)
它提到的例子似乎“足以解释可能的用例。”
仅限
setApplicationEnabledSetting(String, int, int)
的标记:应考虑此应用程序,直到用户实际想要使用它为止。这意味着它通常不会显示给用户(例如在启动器中),但是用户界面的各个部分可以使用GET_DISABLED_UNTIL_USED_COMPONENTS
仍然可以看到它并允许用户选择它(例如IME,设备管理员等)。一旦用户选择了应用程序,此类代码也应在此时启用。此选项目前无法与setComponentEnabledSetting(ComponentName, int, int)
一起使用。
COMPONENT_ENABLED_STATE_DISABLED_USER (在API级别14中添加)
看起来他们的目的是最终与setComponentEnabledSetting
合作,但目前他们不能。这是为了向前兼容,文档说明您可以使用setApplicationEnabledSetting
。
仅限
setApplicationEnabledSetting(String, int, int)
的标记:用户已明确禁用该应用程序,无论其在清单中指定了什么。因为这是由于用户的请求,所以如果需要,他们可以通过适当的系统UI重新启用它。此选项目前不能与setComponentEnabledSetting(ComponentName, int, int)
一起使用。
DONT_DELETE_DATA 标记已重命名为 DELETE_KEEP_DATA ,文档尚未更新。它已被标记为@hide
,因为它不适合公共开发人员使用。
/**
* Flag parameter for {@link #deletePackage} to indicate that you don't want to delete the
* package's data directory.
*
* @hide
*/
public static final int DELETE_KEEP_DATA = 0x00000001;