android 查询手机已安装的第三方应用程序

1、获取手机上已安装第三方的应用的应用名称和包名并打印

  private void queryFilterAppInfo() {  
PackageManager pm = this.getPackageManager();
// 查询所有已经安装的应用程序
List<ApplicationInfo> listAppcations = pm.getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);
Collections.sort(listAppcations,new ApplicationInfo.DisplayNameComparator(pm));// 排序
// 第三方应用程序
for (ApplicationInfo app : listAppcations) {
//非系统程序
if ((app.flags & ApplicationInfo.FLAG_SYSTEM) <= 0) {
Log.e("Sang", ""+app.loadLabel(pm)+" 的包名是:"+app.packageName);
}
//本来是系统程序,被用户手动更新后,该系统程序也成为第三方应用程序了
else if ((app.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0){
Log.e("Sang", ""+app.loadLabel(pm)+" 的包名是:"+app.packageName);
}
}
return ;
}

 Log输出样式,如:" QQ 的包名是: com.tencent.mobileqq" !

private List<PushDownList> queryFilterAppInfo() {  
        pm = this.getPackageManager();  
        // 查询所有已经安装的应用程序  
        List<ApplicationInfo> listAppcations = pm.getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);  
        Collections.sort(listAppcations,new ApplicationInfo.DisplayNameComparator(pm));// 排序  
        List<PushDownList> appInfos = new ArrayList<PushDownList>(); // 保存过滤查到的AppInfo  
        
        // 第三方应用程序  
        appInfos.clear();
        for (ApplicationInfo app : listAppcations) {  
            //非系统程序
            if ((app.flags & ApplicationInfo.FLAG_SYSTEM) <= 0) {  
                appInfos.add(getAppInfo(app));  
            }
            //本来是系统程序,被用户手动更新后,该系统程序也成为第三方应用程序了  
            else if ((app.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0){  
                appInfos.add(getAppInfo(app));  
            }
        }
        return appInfos;
    }

原文地址:https://www.cnblogs.com/fly-allblue/p/3805976.html