1

背景

我正在开发一个应用程序管理器应用程序,我注意到有一种方法可以获取“已卸载应用程序”列表(使用“ GET_UNINSTALLED_PACKAGES ”标志),这些应用程序要求在卸载时避免删除其数据.

这是文档中的内容:

标志参数以检索有关具有数据目录的所有应用程序(甚至已卸载的应用程序)的一些信息。如果使用标志 DONT_DELETE_DATA 删除了应用程序,并且将来有可能被替换或重新安装,则可能会导致此状态。

注意:此标志可能会导致返回有关当前安装的应用程序的较少信息。

问题

我试图调查更多有关此功能的信息,但除了此文档之外,我几乎没有找到任何关于它的信息。

问题

  1. 此类应用程序如何请求此功能?除了我所写的内容外,我什至在文档的任何地方都找不到“DONT_DELETE_DATA”。在这个网站上看,它似乎是 PackageManager 类的一部分,但我看不到它在 Eclipse 上是公开的。
  2. 数据会保留多久?
  3. 如何检测此类应用程序?有什么可以看的PackageInfoApplicationInfo显示它吗?也许是 ApplicationInfo 上的“ FLAG_INSTALLED ”?我已经运行了它,即使我已经安装和卸载了许多应用程序,我得到的应用程序列表都没有关闭此标志。
  4. 选择卸载此类“幽灵”般的应用程序真的会删除它们吗?
  5. 我还能在内置的应用管理器上看到这些应用吗?
  6. 我还能管理此类应用程序吗?
  7. 可以从此类应用程序中检索哪些信息(图标、名称等...)?我问这个是因为文档说“这个标志可能会导致更少的信息”。
  8. 文档说,当我使用 GET_UNINSTALLED_PACKAGES 时,我可能会得到更少的关于“当前安装的应用程序”的信息。这是一个错误吗?不应该是“当前安装的应用程序”吗?
  9. 当一个应用程序使用这个不删除其数据的标志时,它是指仅内部存储的私有数据,还是外部存储的公共数据?
4

1 回答 1

1

根据https://github.com/android/platform_frameworks_base/blob/master/core/java/android/content/pm/PackageManager.java的源代码,PackageManager 有一个 deletePackage 方法,它采用标志参数。

DONT_DELETE_DATA 是这些标志之一。所以,这不是应用程序的属性,它是 deletePackage 方法的一个标志,告诉它在删除应用程序时保留数据。

您在 javaDocs 中看不到 deletePackage,因为该方法具有 @hide 标记。

于 2014-08-23T11:31:30.837 回答