关于 "DONT_DELETE_DATA" 的一些问题,它是如何工作的,以及应用程序如何使用它
Posted
技术标签:
【中文标题】关于 "DONT_DELETE_DATA" 的一些问题,它是如何工作的,以及应用程序如何使用它【英文标题】:Some questions about "DONT_DELETE_DATA" , how it works, and how do apps use it 【发布时间】:2014-10-17 03:32:27 【问题描述】:背景
我正在开发一个app-manager 应用程序,我注意到有一种方法可以获取“已卸载应用程序”列表(使用“GET_UNINSTALLED_PACKAGES”标志),这些应用程序要求避免删除卸载时的数据。
文档是这样说的:
标志参数,用于检索有关所有应用程序的一些信息 (甚至是已卸载的)具有数据目录的。这种状态可以 如果应用程序已被删除并带有标志,则结果 DONT_DELETE_DATA 有可能被替换或重新安装 未来。
注意:此标志可能会导致有关当前安装的信息较少 申请被退回。
问题
我已尝试调查有关此功能的更多信息,但除了此文档之外,我几乎没有找到任何关于它的信息。
问题
-
此类应用程序如何请求此功能?除了我所写的内容外,我什至在文档的任何地方都找不到“DONT_DELETE_DATA”。查看this website,它似乎是PackageManager 类的一部分,但我看不到它在Eclipse 上是公开的。
数据会保留多长时间?
如何检测此类应用程序? PackageInfo 或 ApplicationInfo 有什么可以显示的吗?
也许是 ApplicationInfo 上的“FLAG_INSTALLED”?
我已经运行了它,即使我已经安装和卸载了许多应用程序,我得到的应用程序列表都没有关闭此标志。
选择卸载此类“幽灵”般的应用程序真的会删除它们吗?
我还能在内置应用管理器中看到这些应用吗?
我还能管理此类应用吗?
可以检索此类应用程序的哪些信息(图标、名称等...)?
我问这个是因为文档说“这个标志可能会导致更少的信息”。
文档说,当我使用 GET_UNINSTALLED_PACKAGES 时,我可能会获得较少的有关“当前安装的应用程序”的信息。这是一个错误吗?不应该是“当前未安装的应用程序”吗?
当应用程序使用此标志不删除其数据时,它是指仅内部存储的私有数据,还是外部存储的公共数据?
【问题讨论】:
【参考方案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 标记。
【讨论】:
那么什么时候发生呢?什么时候删除这些数据?这对我来说真的很神秘。您能尝试回答其他问题吗? 当应用程序调用 PackageManager 的 deletePackage() 方法时发生。据推测,这将是“应用程序管理器”类型的应用程序。此外,据推测,数据永远不会被删除。至于您的其他问题 - 抱歉,我只是不知道。以上是关于关于 "DONT_DELETE_DATA" 的一些问题,它是如何工作的,以及应用程序如何使用它的主要内容,如果未能解决你的问题,请参考以下文章
关于javaScript中的“===”,"!=="和"==","!="