java
public static List<AppInfo> getAppinfos(Context context){
PackageManager pm = context.getPackageManager();
List<PackageInfo> packinfos = pm.getInstalledPackages(PackageManager.GET_PERMISSIONS );
List<AppInfo> appinfos = new ArrayList<AppInfo>();
for(PackageInfo info : packinfos){
AppInfo appInfo = new AppInfo();
appInfo.setPackname(info.packageName);
appInfo.setVersion(info.versionName);
appInfo.setAppName(info.applicationInfo.loadLabel(pm).toString());
appInfo.setAppIcon(info.applicationInfo.loadIcon(pm));
if((info.applicationInfo.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE)==0){
appInfo.setInRom(true);
}else{
appInfo.setInRom(false);
}
if(filterApp(info.applicationInfo)){
appInfo.setUserApp(true);
}else{
appInfo.setUserApp(false);
}
String[] permissions = info.requestedPermissions;
if(permissions!=null && permissions.length>0){
for(String p: permissions){
if("android.permission.INTERNET".equals(p)){
appInfo.setUseNetwork(true);
}else if("android.permission.ACCESS_FINE_LOCATION".equals(p)){
appInfo.setUseGPS(true);
}else if("android.permission.READ_CONTACTS".equals(p)){
appInfo.setUseContact(true);
}
}
}
appinfos.add(appInfo);
appInfo = null;
}
return appinfos;
}