Некоторые вопросы о DONT_DELETE_DATA, как это работает и как приложения используют его
Фон
Я занимаюсь разработкой приложения для менеджера приложений и заметил, что есть способ получить список " удаленных приложений" (с помощью флага " GET_UNINSTALLED_PACKAGES "), которые представляют собой приложения, которые запрашивают удаление своих данных при удалении.,
Вот что говорится в документации:
Параметр флага, чтобы получить некоторую информацию обо всех приложениях (даже неустановленных), которые имеют каталоги данных. Это состояние могло возникнуть, если бы приложения были удалены с флагом DONT_DELETE_DATA с возможностью замены или переустановки в будущем.
Примечание: этот флаг может привести к тому, что будет возвращено меньше информации о установленных в данный момент приложениях.
Эта проблема
Я пытался исследовать больше об этой функции, но я не нашел почти ничего об этом, кроме этой документации.
Вопросы
- Как такие приложения запрашивают эту функцию? Я даже не могу найти "DONT_DELETE_DATA" в документации, кроме того, о чем я написал. Глядя на этот веб-сайт, кажется, что он является частью класса PackageManager, но я не вижу его общедоступным в Eclipse.
- Как долго будут храниться данные?
- Как я могу обнаружить такие приложения? Есть ли что-нибудь, чтобы посмотреть PackageInfo или ApplicationInfo, что показывает это? Возможно, это " FLAG_INSTALLED " в ApplicationInfo? Я запустил его, и ни в одном из списка приложений, которые я получил, этот флаг не был отключен, хотя я установил и удалил много приложений.
- Будет ли удаление таких "призрачных" приложений действительно их удалять?
- Смогу ли я увидеть эти приложения во встроенном диспетчере приложений?
- Смогу ли я управлять такими приложениями?
- Какую информацию можно получить из таких приложений (значок, имя и т. Д.,...)? Я спрашиваю об этом, поскольку в документации сказано, что "этот флаг может вызвать меньше информации" .
- В документации сказано, что когда я использую 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, который указывает ему сохранять данные при удалении приложения.
Вы не видите deletePackage в javaDocs, потому что метод имеет тег @hide.