关于“DONT_DELETE_DATA”的一些问题,它是如何工作的,以及应用程序如何使用它

时间:2014-08-23 11:06:07

标签: android uninstall android-applicationinfo package-info

背景

我正在开发一个app-manager应用,而且我注意到有一种方法可以获得一个"已卸载的应用列表" (使用" GET_UNINSTALLED_PACKAGES" flag),这些应用程序要求避免在卸载时删除其数据。

以下是文档说的内容:

  

标记参数以检索有关所有应用程序的一些信息   (甚至是未安装的)具有数据目录。这种状态可以   如果已经使用flag删除了应用程序,则会产生   DONT_DELETE_DATA有可能被替换或重新安装   将来。

     

注意:此标志可能导致当前安装的信息较少   要退回的申请。

问题

我试图对此功能进行更多调查,但除了本文档之外,我几乎找不到任何相关内容。

问题

  1. 此类应用如何申请此功能?我甚至无法找到" DONT_DELETE_DATA"文档中的任何地方,除了我所写的内容。看看this website,它似乎是PackageManager类的一部分,但我无法看到它在Eclipse上公开。
  2. 数据会保留多长时间?
  3. 我如何检测此类应用?是否可以查看显示它的PackageInfoApplicationInfo? 它是" FLAG_INSTALLED"或许在ApplicationInfo上? 我已经运行了它,即使我已经安装并卸载了许多应用程序,也没有关闭此标记的应用程序列表。
  4. 选择卸载这样的" ghost"类似的应用程序真的会删除它们吗?
  5. 我是否仍然可以在内置的应用管理器中看到这些应用?
  6. 我仍然可以管理此类应用吗?
  7. 可以检索此类应用的哪些信息(图标,名称等等)? 我问这个,因为文件说"这个标志可能会导致更少的信息和#34;
  8. 文档说当我使用GET_UNINSTALLED_PACKAGES时,我可能会获得关于"当前安装的应用程序"的更少信息。这是一个错误吗?不应该是"目前 un 安装的应用程序" ?
  9. 当应用使用此标记时不删除其数据,是仅表示内部存储,私有数据还是外部存储公共数据?

1 个答案:

答案 0 :(得分: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标记。