@Override public ProviderInfo resolveContentProvider(String name, int flags) throws RemoteException { waitForReadyInner(); try { enforcePluginFileExists(); if (shouldNotBlockOtherInfo()) { for (PluginPackageParser pluginPackageParser : mPluginCache.values()) { List<ProviderInfo> providerInfos = pluginPackageParser.getProviders(); for (ProviderInfo providerInfo : providerInfos) { if (TextUtils.equals(providerInfo.authority, name)) { return providerInfo; } } } } else { List<String> pkgs = mActivityManagerService.getPackageNamesByPid(Binder.getCallingPid()); for (PluginPackageParser pluginPackageParser : mPluginCache.values()) { List<ProviderInfo> providerInfos = pluginPackageParser.getProviders(); for (ProviderInfo providerInfo : providerInfos) { if (TextUtils.equals(providerInfo.authority, name) && pkgs.contains(providerInfo.packageName)) { return providerInfo; } } } } } catch (Exception e) { handleException(e); } return null; }