Android - PackageManager 标志

3

我正在使用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

在阅读文档时,我发现对于常量5-7,组件必须启用/禁用,无论它在清单文件中如何指定。

对于3,文档中写道:

This application should be considered, until the point where the user actually
wants to use it.

这是什么意思?

对于第四点,文档中写道:

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标志在哪里指定?

总的来说,如果有人能够解释这些常量对开发人员的用例,那将非常有帮助。

谢谢。

1个回答

0

我在我的一个项目中使用它们。在这里查看。https://github.com/slightfoot/android-launcher-badges

不确定是否有帮助。

编辑: 您将看到此处使用的大多数标志:AppBadge.java 其余部分都相当自我解释。文档似乎描述得非常清楚。

  • COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED (API level 18新增)

    它提到的示例似乎相当充分地解释了可能的用例。

    setApplicationEnabledSetting(String, int, int)的标志:在用户实际想要使用它之前,应将此应用程序视为。这意味着它通常不会显示给用户(例如在启动器中),但是用户界面的各个部分可以使用GET_DISABLED_UNTIL_USED_COMPONENTS仍然看到它并允许用户选择它(例如IME、设备管理员等)。一旦用户选择了应用程序,此类代码也应在那时使其启用。目前无法使用此选项与setComponentEnabledSetting(ComponentName, int, int)

  • COMPONENT_ENABLED_STATE_DISABLED_USER (API level 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;
    

  • 请您详细说明项目中的用例。您使用了哪个标志,请解释上述标志的含义不明确之处。 - Gem

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接