2012-01-12 135 views
0

我想僅使用包名稱來過濾系統應用程序。我怎樣才能做到這一點?如何過濾系統應用程序?

我知道下面的函數過濾系統應用程序,但正如我上面所說的只使用包名稱。

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

如果你提供的用例,這將有助於在回答 – nandeesh 2012-01-12 12:58:20

回答

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; 
} 
相關問題