Get icons of all installed apps in android

前端 未结 5 1307
眼角桃花
眼角桃花 2020-12-13 19:02

I want to get icons of my all installed apps. Can I get that icons using package manager? Is there any function for it? Or any other way to get icons of all installed apps i

5条回答
  •  温柔的废话
    2020-12-13 20:01

    Try this way: Make a class called PackageInformation:

    public class PackageInformation {
    
        private Context mContext;
    
        public PackageInformation(Context context) {
            mContext = context;
        }
    
        class InfoObject {
            public String appname = "";
            public String pname = "";
            public String versionName = "";
            public int versionCode = 0;
            public Drawable icon;
    
    
            public void InfoObjectAggregatePrint() { //not used yet
                Log.v(appname, appname + "\t" + pname + "\t" + versionName + "\t" + versionCode);
            }
    
        }
    
        private ArrayList < InfoObject > getPackages() {
            ArrayList < InfoObject > apps = getInstalledApps(false);
            final int max = apps.size();
            for (int i = 0; i < max; i++) {
                apps.get(i).prettyPrint();
            }
            return apps;
        }
    
        public ArrayList < InfoObject > getInstalledApps(boolean getSysPackages) {
            ArrayList < InfoObject > res = new ArrayList < InfoObject > ();
            List < PackageInfo > packs = mContext.getPackageManager().getInstalledPackages(0);
            for (int i = 0; i < packs.size(); i++) {
                PackageInfo p = packs.get(i);
                if ((!getSysPackages) && (p.versionName == null)) {
                    continue;
                }
                InfoObject newInfo = new InfoObject();
                newInfo.appname = p.applicationInfo.loadLabel(mContext.getPackageManager()).toString();
                newInfo.pname = p.packageName;
                newInfo.versionName = p.versionName;
                newInfo.versionCode = p.versionCode;
                newInfo.icon = p.applicationInfo.loadIcon(mContext.getPackageManager());
                res.add(newInfo);
            }
            return res;
        }
    
    }
    

    tuck this away somewhere and now to access the info from your working Activity class do this:

    PackageInformation androidPackagesInfo = new PackageInformation(this);
    ArrayList < InfoObject > appsData = androidPackagesInfo.getInstalledApps(true);
    
    for (InfoObject info: appsData) {
        Toast.makeText(MainActivity.this, info.appname, 2).show();
        Drawable somedrawable = info.icon;
    
    }
    

提交回复
热议问题