【技术支持】Android11 中获取应用列表

    <queries>
        
        <intent>
            <action android:name="android.intent.action.MAIN" />
        intent>

    queries>

getInstalledApplications方式获取的比较杂乱,有时无法获取第三方应用
建议使用queryIntentActivities

PackageManager pm = getPackageManager();

// List apps = pm.getInstalledApplications(PackageManager.GET_META_DATA);
        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_LAUNCHER);
        List<ResolveInfo> resolveInfos = pm.queryIntentActivities(intent, 0);
        for (ResolveInfo resolveInfo : resolveInfos) {
            try {
                ApplicationInfo appInfo = pm.getApplicationInfo(
                        resolveInfo.activityInfo.packageName, 0);
                Drawable banner = appInfo.loadBanner(pm);
                if( banner==null){
                    banner = appInfo.loadIcon(pm);
                }
                AppItem app = new AppItem(
                        appInfo.loadLabel(pm).toString(),
                        banner,
                        appInfo.packageName
                );
                appList.add(app);
            } catch (PackageManager.NameNotFoundException e) {
                e.printStackTrace();
            }
        }

你可能感兴趣的:(技术支持,android-studio,android,jetpack)