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

如何获取Android系统预装应用程序的软件包名称,android,Android,我已经知道如何获取用户安装的应用程序的包名。 但是我不知道如何获取预装或类似系统软件(Samsung Fit、Calender等)的应用程序的包名?List packages=context.getPackageManager().getInstalledApplication(PackageManager.get_META_DATA); 对于(ApplicationInfo packageInfo:packages){ Log.d(标签“Package:+packageInfo.package

我已经知道如何获取用户安装的应用程序的包名。 但是我不知道如何获取预装或类似系统软件(Samsung Fit、Calender等)的应用程序的包名?

List packages=context.getPackageManager().getInstalledApplication(PackageManager.get_META_DATA);
对于(ApplicationInfo packageInfo:packages){
Log.d(标签“Package:+packageInfo.packageName”);
Log.d(标记,“启动器活动:+pm.getLaunchIntentForPackage(packageInfo.packageName));
}

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

您可以使用下面的代码获取系统应用程序的列表
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;
}
publicstaticarraylistgetsystempackageinfo(最终活动上下文){
ArrayList=新建ArrayList();
ArrayList packageNames=新的ArrayList();
PackageManager pm=context.getPackageManager();
List pinfoList=pm.getInstalledPackages(0);
集合。排序(pinfoList、PackageNameComparator);
对于(PackageInfo pinfo:pinfoList){
packageName.add(pinfo.packageName);
布尔isSystem=false;
if(((pinfo.applicationInfo.flags和applicationInfo.FLAG\u SYSTEM)==0)){
isSystem=false;
}否则{
isSystem=true;
}
if(pinfo.applicationInfo.sourceDir.startsWith(“/data/app/”)&&isSystem){
//非系统应用程序
isSystem=false;
}
if(!isSystem){
继续;
}
位图图标=空;
可绘制的apkIcon=getApplicationIcon(pinfo.applicationInfo,context);
试一试{
icon=Bitmap.createBitmap(apkIcon.getIntrinsicWidth()、apkIcon.getIntrinsicHeight()、Bitmap.Config.ARGB_8888);
画布=新画布(图标);
apkIcon.setBounds(0,0,canvas.getWidth(),canvas.getHeight());
apkIcon.draw(画布);
}catch(ClassCastException e){
}
String name=pinfo.applicationInfo.loadLabel(pm.toString();
long apkSize=新文件(pinfo.applicationInfo.sourceDir).length();
列表。添加(pinfo);
}
退货清单;
}
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;
}