简体   繁体   中英

Getting the app names and app icons of android non-system apps

In android,how can I get a list of the app names(not package names) of all my installed non-system apps along with their app icons

below this website This project is kotlin.

This is my code

To get the data related to installed apps use package manager.

final PackageManager pm = getPackageManager();
//get a list of installed apps.
List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);

for (ApplicationInfo packageInfo : packages) {
    Log.d(TAG, "Installed package :" + packageInfo.packageName);
    Log.d(TAG, "Source dir : " + packageInfo.sourceDir);
    Log.d(TAG, "Launch Activity :" + pm.getLaunchIntentForPackage(packageInfo.packageName)); 
}

For more details follow this StackOverflow answer

This method helps you to get all installed apps detail from your device like name, package name, icon, version etc..

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;
}}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM