2023年12月24日发(作者:)
static LauncherAppsInfo getLauncherApps( @NonNull Set blackList, @NonNull Set customMediaComponents, @AppTypes int appTypes, boolean openMediaCenter, LauncherApps launcherApps, CarPackageManager carPackageManager, PackageManager packageManager, CarMediaManager carMediaManager) { if (launcherApps == null || carPackageManager == null || packageManager == null || carMediaManager == null) { return EMPTY_APPS_INFO; } // 检索所有符合给定intent的服务 List mediaServices = ntentServices( new Intent(E_INTERFACE), _RESOLVED_FILTER); // 检索指定packageName的Activity的列表 List availableActivities = ivityList(null, Handle()); Map launchablesMap = new HashMap<>( () + ()); Map mediaServicesMap = new HashMap<>(()); // Process media services if ((appTypes & APP_TYPE_MEDIA_SERVICES) != 0) { for (ResolveInfo info : mediaServices) { String packageName = eName; String className = ; ComponentName componentName = new ComponentName(packageName, className); (componentName, info); if (shouldAddToLaunchables(componentName, blackList, customMediaComponents, appTypes, APP_TYPE_MEDIA_SERVICES)) { final boolean isDistractionOptimized = true; Intent intent = new Intent(_INTENT_ACTION_MEDIA_TEMPLATE); ra(_EXTRA_MEDIA_COMPONENT, nToString()); AppMetaData appMetaData = new AppMetaData( bel(packageManager), componentName, on(packageManager), isDistractionOptimized, context -> { if (openMediaCenter) { App(context, intent); } else { selectMediaSourceAndFinish(context, componentName, carMediaManager); } }, context -> { // 返回系统中所有MainActivity带有RY_INFO 和 RY_LAUNCHER的intent Intent packageLaunchIntent = nchIntentForPackage(packageName); App(context, packageLaunchIntent != null ? packageLaunchIntent : intent); }); (componentName, appMetaData); } } } // Process activities if ((appTypes & APP_TYPE_LAUNCHABLES) != 0) {
参考资料
发布评论