获取Android中的非服务应用列表

时间:2017-04-10 21:20:45

标签: android package android-6.0-marshmallow

我试图提取在Android上运行的应用程序列表。如果我不过滤我会获得很多服务和长包名称。

List<String> appList = new ArrayList<>();
        final PackageManager pm = getPackageManager();
        //get a list of installed apps.
        List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
for (ApplicationInfo packageInfo : packages) {
            if(true){
                Log.d(TAG, "Installed package :" + packageInfo.packageName);
                Log.d(TAG, "Source dir : " + packageInfo.sourceDir);
                Log.d(TAG, "Launch Activity :" + pm.getLaunchIntentForPackage(packageInfo.packageName));
                Log.d(TAG, "Name: "+pm.getApplicationLabel(packageInfo));
                appList.add(pm.getApplicationLabel(packageInfo).toString());
            }
        }

但是,如果我为系统添加过滤器,它会移除基本应用程序,如电话,消息,相机等。

for (ApplicationInfo packageInfo : packages) {
        if((packageInfo.flags & packageInfo.FLAG_SYSTEM )!=1){
            Log.d(TAG, "Installed package :" + packageInfo.packageName);
            Log.d(TAG, "Source dir : " + packageInfo.sourceDir);
            Log.d(TAG, "Launch Activity :" + pm.getLaunchIntentForPackage(packageInfo.packageName));
            Log.d(TAG, "Name: "+pm.getApplicationLabel(packageInfo));
            appList.add(pm.getApplicationLabel(packageInfo).toString());
        }
    }

如何获取所有已安装的应用程序以及系统应用程序的列表?

我正在使用android studio 2.3.1并使用以下的graddle配置:

minSdkVersion 23
targetSdkVersion 25

0 个答案:

没有答案