繁体   English   中英

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

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

在 android 中,如何获取所有已安装的非系统应用程序的应用程序名称列表(不是 package 名称)及其应用程序图标

这个网站下面这个项目是kotlin。

这是我的代码

要获取与已安装应用程序相关的数据,请使用 package 管理器。

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

有关更多详细信息,请遵循此 StackOverflow 答案

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

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

包AppInfo.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;
}}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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