如何在Android中获取系统预安装应用程序的软件包名称

时间:2017-08-04 04:26:06

标签: android

我已经知道如何获取用户安装的应用程序的包名称。 但我无法弄清楚如何获得预装的应用程序的包名称或者像Samsung Fit,Calender等系统软件?

2 个答案:

答案 0 :(得分:1)

List<ApplicationInfo> packages = context.getPackageManager().getInstalledApplications(PackageManager.GET_META_DATA);
for (ApplicationInfo packageInfo : packages) {
    Log.d(TAG, "Package :" + packageInfo.packageName);
    Log.d(TAG, "Launcher Activity :" + pm.getLaunchIntentForPackage(packageInfo.packageName)); 
}

ApplicationInfo 有一个 packageName 字段,该字段为您提供应用程序的包名称。

答案 1 :(得分:1)

您可以使用以下代码获取系统应用程序列表PackageInfo

public static ArrayList<PackageInfo> getSystemPackageInfos(final Activity context) {
    ArrayList<PackageInfo> list = new ArrayList<PackageInfo>();
    ArrayList<String> packageNames = new ArrayList<String>();
    PackageManager pm = context.getPackageManager();
    List<PackageInfo> pinfoList = pm.getInstalledPackages(0);
    Collections.sort(pinfoList, PackageNameComparator);

    for (PackageInfo pinfo : pinfoList) {
        packageNames.add(pinfo.packageName);
        boolean isSystem = false;

        if (((pinfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0)) {
            isSystem = false;
        } else {
            isSystem = true;
        }

        if (pinfo.applicationInfo.sourceDir.startsWith("/data/app/") && isSystem) {
            //Non-system app
            isSystem = false;
        }

        if (!isSystem) {
            continue;
        }

        Bitmap icon = null;
        Drawable apkIcon = getApplicationIcon(pinfo.applicationInfo, context);
        try {
            icon = Bitmap.createBitmap(apkIcon.getIntrinsicWidth(), apkIcon.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);

            Canvas canvas = new Canvas(icon);
            apkIcon.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
            apkIcon.draw(canvas);
        } catch (ClassCastException e) {
        }
        String name = pinfo.applicationInfo.loadLabel(pm).toString();

        long apkSize = new File(pinfo.applicationInfo.sourceDir).length();


        list.add(pinfo);

    }
    return list;
}