@Override public int getPackageUid(String packageName, int userId) { checkUserId(userId); synchronized (mPackages) { VPackage p = mPackages.get(packageName); if (p != null) { PackageSetting ps = (PackageSetting) p.mExtras; return VUserHandle.getUid(userId, ps.appId); } return -1; } }
@Override public PackageInfo getPackageInfo(String packageName, int flags, int userId) { checkUserId(userId); synchronized (mPackages) { VPackage p = mPackages.get(packageName); if (p != null) { PackageSetting ps = (PackageSetting) p.mExtras; return generatePackageInfo(p, ps, flags, userId); } } return null; }
@Override public VParceledListSlice<PackageInfo> getInstalledPackages(int flags, int userId) { checkUserId(userId); ArrayList<PackageInfo> pkgList = new ArrayList<>(mPackages.size()); synchronized (mPackages) { for (VPackage p : mPackages.values()) { PackageSetting ps = (PackageSetting) p.mExtras; PackageInfo info = generatePackageInfo(p, ps, flags, userId); if (info != null) { pkgList.add(info); } } } return new VParceledListSlice<>(pkgList); }
@Override public String[] getPackagesForUid(int uid) { int userId = VUserHandle.getUserId(uid); checkUserId(userId); synchronized (this) { List<String> pkgList = new ArrayList<>(2); for (VPackage p : mPackages.values()) { PackageSetting settings = (PackageSetting) p.mExtras; if (VUserHandle.getUid(userId, settings.appId) == uid) { pkgList.add(p.packageName); } } return pkgList.toArray(new String[pkgList.size()]); } }
@Override public ResolveInfo resolveService(Intent intent, String resolvedType, int flags, int userId) { checkUserId(userId); flags = updateFlagsNought(flags); List<ResolveInfo> query = queryIntentServices(intent, resolvedType, flags, userId); if (query != null) { if (query.size() >= 1) { // If there is more than one service with the same priority, // just arbitrarily pick the first one. return query.get(0); } } return null; }
@Override public VParceledListSlice<ApplicationInfo> getInstalledApplications(int flags, int userId) { checkUserId(userId); flags = updateFlagsNought(flags); ArrayList<ApplicationInfo> list = new ArrayList<>(mPackages.size()); synchronized (mPackages) { for (VPackage p : mPackages.values()) { PackageSetting ps = (PackageSetting) p.mExtras; ApplicationInfo info = PackageParserEx.generateApplicationInfo(p, flags, ps.readUserState(userId), userId); list.add(info); } } return new VParceledListSlice<>(list); }
@Override public ApplicationInfo getApplicationInfo(String packageName, int flags, int userId) { checkUserId(userId); flags = updateFlagsNought(flags); synchronized (mPackages) { VPackage p = mPackages.get(packageName); if (p != null) { PackageSetting ps = (PackageSetting) p.mExtras; return PackageParserEx.generateApplicationInfo(p, flags, ps.readUserState(userId), userId); } } return null; }
@Override public ResolveInfo resolveIntent(Intent intent, String resolvedType, int flags, int userId) { checkUserId(userId); flags = updateFlagsNought(flags); List<ResolveInfo> query = queryIntentActivities(intent, resolvedType, flags, 0); return chooseBestActivity(intent, resolvedType, flags, query); }
@Override public VParceledListSlice<ProviderInfo> queryContentProviders(String processName, int vuid, int flags) { int userId = VUserHandle.getUserId(vuid); checkUserId(userId); flags = updateFlagsNought(flags); ArrayList<ProviderInfo> finalList = new ArrayList<>(3); // reader synchronized (mPackages) { for (VPackage.ProviderComponent p : mProvidersByComponent.values()) { PackageSetting ps = (PackageSetting) p.owner.mExtras; if (processName == null || ps.appId == VUserHandle.getAppId(vuid) && p.info.processName.equals(processName)) { ProviderInfo providerInfo = PackageParserEx.generateProviderInfo(p, flags, ps.readUserState(userId), userId); finalList.add(providerInfo); } } } if (!finalList.isEmpty()) { Collections.sort(finalList, sProviderInitOrderSorter); } return new VParceledListSlice<>(finalList); }
@Override public ProviderInfo resolveContentProvider(String name, int flags, int userId) { checkUserId(userId); flags = updateFlagsNought(flags); synchronized (mPackages) { final VPackage.ProviderComponent provider = mProvidersByAuthority.get(name); if (provider != null) { PackageSetting ps = (PackageSetting) provider.owner.mExtras; ProviderInfo providerInfo = PackageParserEx.generateProviderInfo(provider, flags, ps.readUserState(userId), userId); if (providerInfo != null) { VPackage p = mPackages.get(providerInfo.packageName); PackageSetting settings = (PackageSetting) p.mExtras; ComponentFixer.fixComponentInfo(settings, providerInfo, userId); return providerInfo; } } } return null; }
@Override public ActivityInfo getReceiverInfo(ComponentName component, int flags, int userId) { checkUserId(userId); flags = updateFlagsNought(flags); synchronized (mPackages) { VPackage p = mPackages.get(component.getPackageName()); if (p != null) { PackageSetting ps = (PackageSetting) p.mExtras; VPackage.ActivityComponent a = mReceivers.mActivities.get(component); if (a != null) { ActivityInfo receiverInfo = PackageParserEx.generateActivityInfo(a, flags, ps.readUserState(userId), userId); ComponentFixer.fixComponentInfo(ps, receiverInfo, userId); return receiverInfo; } } } return null; }
@Override public ProviderInfo getProviderInfo(ComponentName component, int flags, int userId) { checkUserId(userId); flags = updateFlagsNought(flags); synchronized (mPackages) { VPackage p = mPackages.get(component.getPackageName()); if (p != null) { PackageSetting ps = (PackageSetting) p.mExtras; VPackage.ProviderComponent provider = mProvidersByComponent.get(component); if (provider != null) { ProviderInfo providerInfo = PackageParserEx.generateProviderInfo(provider, flags, ps.readUserState(userId), userId); ComponentFixer.fixComponentInfo(ps, providerInfo, userId); return providerInfo; } } } return null; }
@Override public ActivityInfo getActivityInfo(ComponentName component, int flags, int userId) { checkUserId(userId); flags = updateFlagsNought(flags); synchronized (mPackages) { VPackage p = mPackages.get(component.getPackageName()); if (p != null) { PackageSetting ps = (PackageSetting) p.mExtras; VPackage.ActivityComponent a = mActivities.mActivities.get(component); if (a != null) { ActivityInfo activityInfo = PackageParserEx.generateActivityInfo(a, flags, ps.readUserState(userId), userId); ComponentFixer.fixComponentInfo(ps, activityInfo, userId); return activityInfo; } } } return null; }
@Override public ServiceInfo getServiceInfo(ComponentName component, int flags, int userId) { checkUserId(userId); flags = updateFlagsNought(flags); synchronized (mPackages) { VPackage p = mPackages.get(component.getPackageName()); if (p != null) { PackageSetting ps = (PackageSetting) p.mExtras; VPackage.ServiceComponent s = mServices.mServices.get(component); if (s != null) { ServiceInfo serviceInfo = PackageParserEx.generateServiceInfo(s, flags, ps.readUserState(userId), userId); ComponentFixer.fixComponentInfo(ps, serviceInfo, userId); return serviceInfo; } } } return null; }
@TargetApi(Build.VERSION_CODES.KITKAT) @Override public List<ResolveInfo> queryIntentContentProviders(Intent intent, String resolvedType, int flags, int userId) { checkUserId(userId); flags = updateFlagsNought(flags); ComponentName comp = intent.getComponent();
@Override public List<ResolveInfo> queryIntentServices(Intent intent, String resolvedType, int flags, int userId) { checkUserId(userId); flags = updateFlagsNought(flags); ComponentName comp = intent.getComponent();
@Override public List<ResolveInfo> queryIntentActivities(Intent intent, String resolvedType, int flags, int userId) { checkUserId(userId); flags = updateFlagsNought(flags); ComponentName comp = intent.getComponent();
@Override public List<ResolveInfo> queryIntentReceivers(Intent intent, String resolvedType, int flags, int userId) { checkUserId(userId); flags = updateFlagsNought(flags); ComponentName comp = intent.getComponent();
@Override public PackageInfo getPackageInfo(String packageName, int flags, int userId) { checkUserId(userId); synchronized (mPackages) { VPackage p = mPackages.get(packageName); if (p != null) { PackageSetting ps = (PackageSetting) p.mExtras; return generatePackageInfo(p, ps, flags, userId); } } return null; }
@Override public VParceledListSlice<PackageInfo> getInstalledPackages(int flags, int userId) { checkUserId(userId); return new VParceledListSlice<>(new ArrayList<PackageInfo>(0)); }