获取android非系统应用程序的应用程序名称和应用程序图标



在android中,我如何获得所有安装的非系统应用程序的应用程序名称(而不是包名称(列表以及它们的应用程序图标

此方法可以帮助您从设备中获取所有已安装应用程序的详细信息,如名称、包名称、图标、版本等。

private ArrayList<PackageAppInfo> getInstalledApps() {
ArrayList<PackageAppInfo> res = new ArrayList<>();
List<PackageInfo> packs = getPackageManager().getInstalledPackages(0);
for (int i = 0; i < packs.size(); i++) {
PackageInfo p = packs.get(i);
if ((p.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
if (p.packageName.equals(MyOwnApplication.getInstance().getPackageName())) {
continue;
}
PackageAppInfo newInfo = new PackageAppInfo();
newInfo.appname = p.applicationInfo.loadLabel(getPackageManager()).toString();
newInfo.pname = p.packageName;
newInfo.versionName = p.versionName;
newInfo.versionCode = p.versionCode;
ApplicationInfo applicationInfo;
long size;
try {
applicationInfo = getPackageManager().getApplicationInfo(p.packageName, PackageManager.GET_META_DATA);
File file = new File(applicationInfo.publicSourceDir);
size = file.length();
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
size = 0;
}
newInfo.size = size;
newInfo.icon = p.applicationInfo.loadIcon(getPackageManager());
res.add(newInfo);
} else {
String appName = p.applicationInfo.loadLabel(getPackageManager()).toString();
}
}
return res;
}

PackageAppInfo.java

public class PackageAppInfo {
public String appname = "";
public String pname = "";
public String versionName = "";
public int versionCode = 0;
public int permissions = 0;
public Drawable icon;
public long size;
}}

最新更新