已安装的应用程序是否为第三方

Aja*_*ngh 9 android

如何在Android手机上获取已安装的第三方应用程序列表.

我可以使用下面的代码获取应用程序列表,但我只想要第三方应用程序.

PackageManager pm = context.getPackageManager();
appInstalModel.setAppName(p.applicationInfo.loadLabel(context.getPackageManager()).toString());
appInstalModel.setAppPkg(p.packageName);
appInstalModel.setAppVersionName(p.versionName);
Run Code Online (Sandbox Code Playgroud)

Rof*_*ion 7

    List<ApplicationInfo> apps = getPackageManager().getInstalledApplications(0);
    for (int i=0; i < apps.size(); i++)
    {
        if ((apps.get(i).flags & ApplicationInfo.FLAG_SYSTEM) == 1)
        {
            //System app
       }
    }
Run Code Online (Sandbox Code Playgroud)


Nik*_*dze 7

RoflcoptrException的答案是正确的.但在某些情况下,它不会为您提供所有已安装的第三方应用程序.ApplicationInfo也有标志FLAG_UPDATED_SYSTEM_APP设置

如果已将此应用程序安装为内置系统应用程序的更新

在我的智能手机上,这些应用程序包括Amazone Kindle,Adobe Reader,Slacker Radio等.这些应用程序未附带手机,并且是从Google Play商店安装的.因此,它们可以被视为第三方应用程序.

所以,你可能还想检查FLAG_UPDATED_SYSTEM_APP标志.

final PackageManager packageManager = _context.getPackageManager();
List<ApplicationInfo> installedApplications = 
    packageManager.getInstalledApplications(PackageManager.GET_META_DATA);

for (ApplicationInfo appInfo : installedApplications)
{
    if ((appInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0)
    {
        // IS A SYSTEM APP
    }

    if ((appInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0)
    {
        // APP WAS INSTALL AS AN UPDATE TO A BUILD-IN SYSTEM APP
    }
}
Run Code Online (Sandbox Code Playgroud)