Как определить, что приложение можно удалить?

StackOverflow https://stackoverflow.com//questions/12660365

  •  11-12-2019
  •  | 
  •  

Вопрос

Я собираюсь удалить приложение, когда пользователь нажмет на кнопку.с помощью этого кода:

Uri packageURI = Uri.parse("package:"
        + pkNames[position]);
Intent uninstallIntent = new Intent(
Intent.ACTION_DELETE, packageURI);
context.startActivity(uninstallIntent);

но некоторые приложения не поддаются удалению.например, обстановка, или музыка, или ...когда я собираюсь удалить эти приложения, я вижу :удаление не завершилось успешно.

Я получаю свои пакеты с этим кодом :

        Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
        mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
        packages = pm.queryIntentActivities(mainIntent, 0);

Как я могу определить, можно ли удалить приложение или нет?

Это было полезно?

Решение

Вам следует проверить, является ли приложение, которое вы пытаетесь удалить, "системным", заглянув в ApplicationInfo.flags.Системное приложение имеет ApplicationInfo.FLAG_SYSTEM бит установлен.Вот небольшой фрагмент кода:

boolean isSystem(ApplicationInfo info) {
   return (info.flags & ApplicationInfo.FLAG_SYSTEM) != 0;
}

Проверять документация для класса ApplicationInfo для других полезных флагов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top