如何确定应用程序是否是系统应用程序?

时间:2015-04-17 11:04:54

标签: android expandablelistview android-package-managers

我想确定已安装的应用程序是否是系统应用程序。

所以我有一个已安装的应用程序列表,如下所示: enter image description here

并希望更改所有应用程序的背景颜色,这些应用程序是系统应用程序。

以下是我的代码的相应部分:

private void kindElementTexte () {

    // TODO: Bildericons sollen angezeigt werden

    ActivityManager manager =
            ( ActivityManager ) this.getSystemService ( ACTIVITY_SERVICE );


    ArrayList< String > kinder = new ArrayList< String > ();


    final PackageManager pm = getPackageManager ();
    List< ApplicationInfo > packages = pm.getInstalledApplications ( PackageManager.GET_META_DATA );

    View inflate = getLayoutInflater(). inflate(R. layout. anwendung_starten_layout, null);


    String packetName = null;

    for ( ApplicationInfo packageInfo : packages ) {




        packetName = packageInfo.packageName;


        kinder.add ( packetName );
    }


    kindElemente.add ( kinder );


}

有机会这样做吗?

非常感谢。

2 个答案:

答案 0 :(得分:2)

在for循环中,检查应用程序是否是系统应用程序,并根据需要调整颜色。

您可以使用以下代码检查系统应用程序:

for ( ApplicationInfo packageInfo : packages ) {
    if ((packageInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
        //is system app
    }
}

详细了解不同的旗帜in the ApplicationInfo documentation

答案 1 :(得分:1)

我认为这是一个有效的解决方案,并为我显示所有系统应用程序:

for (ApplicationInfo packageInfo : packages) {
    if ((packageInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
        System.out.println(packageInfo.packageName + "is a system application");
    }
}