Некоторые вопросы о DONT_DELETE_DATA, как это работает и как приложения используют его

Фон

Я занимаюсь разработкой приложения для менеджера приложений и заметил, что есть способ получить список " удаленных приложений" (с помощью флага " GET_UNINSTALLED_PACKAGES "), которые представляют собой приложения, которые запрашивают удаление своих данных при удалении.,

Вот что говорится в документации:

Параметр флага, чтобы получить некоторую информацию обо всех приложениях (даже неустановленных), которые имеют каталоги данных. Это состояние могло возникнуть, если бы приложения были удалены с флагом DONT_DELETE_DATA с возможностью замены или переустановки в будущем.

Примечание: этот флаг может привести к тому, что будет возвращено меньше информации о установленных в данный момент приложениях.

Эта проблема

Я пытался исследовать больше об этой функции, но я не нашел почти ничего об этом, кроме этой документации.

Вопросы

  1. Как такие приложения запрашивают эту функцию? Я даже не могу найти "DONT_DELETE_DATA" в документации, кроме того, о чем я написал. Глядя на этот веб-сайт, кажется, что он является частью класса PackageManager, но я не вижу его общедоступным в Eclipse.
  2. Как долго будут храниться данные?
  3. Как я могу обнаружить такие приложения? Есть ли что-нибудь, чтобы посмотреть PackageInfo или ApplicationInfo, что показывает это? Возможно, это " FLAG_INSTALLED " в ApplicationInfo? Я запустил его, и ни в одном из списка приложений, которые я получил, этот флаг не был отключен, хотя я установил и удалил много приложений.
  4. Будет ли удаление таких "призрачных" приложений действительно их удалять?
  5. Смогу ли я увидеть эти приложения во встроенном диспетчере приложений?
  6. Смогу ли я управлять такими приложениями?
  7. Какую информацию можно получить из таких приложений (значок, имя и т. Д.,...)? Я спрашиваю об этом, поскольку в документации сказано, что "этот флаг может вызвать меньше информации" .
  8. В документации сказано, что когда я использую GET_UNINSTALLED_PACKAGES, я могу получить меньше информации о "установленных на данный момент приложениях" . Это ошибка? не должно ли это быть "в настоящее время неустановленные приложения"?
  9. Когда приложение использует этот флаг, чтобы не удалять свои данные, означает ли это только внутреннее хранилище, личные данные или также внешнее хранилище, публичные данные?

1 ответ

Согласно исходному коду по адресу https://github.com/android/platform_frameworks_base/blob/master/core/java/android/content/pm/PackageManager.java, PackageManager имеет метод deletePackage, который принимает параметры флага.

DONT_DELETE_DATA является одним из этих флагов. Таким образом, это не атрибут приложения, это флаг метода deletePackage, который указывает ему сохранять данные при удалении приложения.

Вы не видите deletePackage в javaDocs, потому что метод имеет тег @hide.

Другие вопросы по тегам