Как отфильтровать системные приложения? - PullRequest
0 голосов
/ 12 января 2012

Я хочу фильтровать системное приложение только по имени пакета. Как я могу это сделать?

Я знаю, что приведенная ниже функция фильтрует системное приложение, но, как я уже сказал выше, использует только имя пакета.

private boolean isSystemPackage(PackageInfo pkgInfo)
{
    return (pkgInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0;
}

Ответы [ 2 ]

2 голосов
/ 12 января 2012

Как я могу это сделать?

Вы не делаете. Это невозможно. Для «системных приложений» не существует соглашения об именовании пакетов.

0 голосов
/ 31 июля 2014

только с использованием имени пакета

Вы можете отфильтровать системные приложения по именам пакетов, но в конечном итоге вам всегда потребуется ApplicationInfo приложения.

Вы можете использовать этот метод:

private boolean isSystemPackage(String packageName){
    PackageManager packageManager = MyActivity.this.getPackageManager();
    ApplicationInfo applicationInfo = null;
    try {
        applicationInfo = packageManager.getApplicationInfo(packageName, 0);
    } catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
    }
    return ((applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) ? true
            : false;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...