2012-01-12 4 views
0

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

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

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

Если вы предоставляете USECASE, это помогло бы в ответе – nandeesh

ответ

2

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

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

0

используя только имя пакета

Вы можете отфильтровать системные приложения, основанные на именах пакетов, но в конечном счете всегда нужен 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; 
} 
Смежные вопросы