@RequiresApi(KITKAT) @Override public List<ResolveInfo> queryIntentContentProviders(Intent intent, int flags) { return mBase.queryIntentContentProviders(intent, flags); }
@Test @Config(minSdk = LOLLIPOP) public void queryIntentContentProviders_EmptyResult() throws Exception { Intent i = new Intent(DocumentsContract.PROVIDER_INTERFACE); List<ResolveInfo> broadCastReceivers = packageManager.queryIntentContentProviders(i, 0); assertThat(broadCastReceivers).isEmpty(); }
@Test @Config(minSdk = LOLLIPOP) public void queryIntentContentProviders_appHidden_includeUninstalled() { String packageName = ApplicationProvider.getApplicationContext().getPackageName(); packageManager.setApplicationHiddenSettingAsUser( packageName, /* hidden= */ true, /* user= */ null); Intent i = new Intent(DocumentsContract.PROVIDER_INTERFACE); i.setClassName( ApplicationProvider.getApplicationContext(), "org.robolectric.shadows.testing.TestContentProvider1"); List<ResolveInfo> resolveInfos = packageManager.queryIntentContentProviders(i, 0); assertThat(resolveInfos).isEmpty(); resolveInfos = packageManager.queryIntentContentProviders(i, MATCH_UNINSTALLED_PACKAGES); assertThat(resolveInfos).hasSize(1); assertThat(resolveInfos.get(0).providerInfo.applicationInfo.packageName).isEqualTo(packageName); assertThat(resolveInfos.get(0).providerInfo.name) .isEqualTo("org.robolectric.shadows.testing.TestContentProvider1"); }
@Test @Config(minSdk = LOLLIPOP) public void queryIntentContentProviders_Match() throws Exception { Intent i = new Intent(DocumentsContract.PROVIDER_INTERFACE); ResolveInfo resolveInfo = new ResolveInfo(); ProviderInfo providerInfo = new ProviderInfo(); providerInfo.authority = "com.robolectric"; resolveInfo.providerInfo = providerInfo; shadowPackageManager.addResolveInfoForIntent(i, resolveInfo); List<ResolveInfo> contentProviders = packageManager.queryIntentContentProviders(i, 0); assertThat(contentProviders).hasSize(1); assertThat(contentProviders.get(0).providerInfo.authority).isEqualTo(providerInfo.authority); }
@Test @Config(minSdk = LOLLIPOP) public void queryIntentContentProviders_MatchDisabledComponents() throws Exception { Intent i = new Intent(DocumentsContract.PROVIDER_INTERFACE); ResolveInfo resolveInfo = new ResolveInfo(); resolveInfo.providerInfo = new ProviderInfo(); resolveInfo.providerInfo.applicationInfo = new ApplicationInfo(); resolveInfo.providerInfo.applicationInfo.packageName = "org.robolectric.shadows.TestPackageName"; resolveInfo.providerInfo.name = "org.robolectric.shadows.TestProvider"; resolveInfo.providerInfo.enabled = false; shadowPackageManager.addResolveInfoForIntent(i, resolveInfo); List<ResolveInfo> resolveInfos = packageManager.queryIntentContentProviders(i, 0); assertThat(resolveInfos).isEmpty(); resolveInfos = packageManager.queryIntentContentProviders(i, PackageManager.MATCH_DISABLED_COMPONENTS); assertThat(resolveInfos).isNotNull(); assertThat(resolveInfos).hasSize(1); }
@Test @Config(minSdk = LOLLIPOP) public void queryIntentContentProviders_MatchSystemOnly() throws Exception { Intent i = new Intent(DocumentsContract.PROVIDER_INTERFACE); ResolveInfo info1 = new ResolveInfo(); info1.providerInfo = new ProviderInfo(); info1.providerInfo.applicationInfo = new ApplicationInfo(); ResolveInfo info2 = new ResolveInfo(); info2.providerInfo = new ProviderInfo(); info2.providerInfo.applicationInfo = new ApplicationInfo(); info2.providerInfo.applicationInfo.flags |= ApplicationInfo.FLAG_SYSTEM; info2.nonLocalizedLabel = "System App"; shadowPackageManager.addResolveInfoForIntent(i, info1); shadowPackageManager.addResolveInfoForIntent(i, info2); List<ResolveInfo> activities = packageManager.queryIntentContentProviders(i, PackageManager.MATCH_SYSTEM_ONLY); assertThat(activities).isNotNull(); assertThat(activities).hasSize(1); assertThat(activities.get(0).nonLocalizedLabel.toString()).isEqualTo("System App"); }
@RequiresApi(KITKAT) @Override public List<ResolveInfo> queryIntentContentProviders(Intent intent, int flags) { return mBase.queryIntentContentProviders(intent, flags); }
@Override public List<ResolveInfo> queryIntentContentProviders(Intent intent, int flags) { return pm.queryIntentContentProviders(intent, flags); }
@RequiresApi(api = Build.VERSION_CODES.KITKAT) @Override public List<ResolveInfo> queryIntentContentProviders(Intent intent, int flags) { return packageManager.queryIntentContentProviders(intent, flags); }
final List<ResolveInfo> providers = pm.queryIntentContentProviders(i, 0); for (ResolveInfo info : providers)
@TargetApi(Build.VERSION_CODES.KITKAT) private static boolean isDocumentsProvider(Context context, String authority) { PackageManager pm = context.getPackageManager(); if(Utils.hasKitKat()){ final Intent intent = new Intent(DocumentsContract.PROVIDER_INTERFACE); final List<ResolveInfo> providers = pm.queryIntentContentProviders(intent, 0); for (ResolveInfo info : providers) { if (authority.equals(info.providerInfo.authority)) { return true; } } } else{ List<ProviderInfo> providers = context.getPackageManager() .queryContentProviders(context.getPackageName(), context.getApplicationInfo().uid, 0); for (ProviderInfo providerInfo : providers) { if (authority.equals(providerInfo.authority)) { return true; } } } return false; }
@Implementation public List<ResolveInfo> queryIntentContentProviders(Intent intent, int flags) { return getDelegatePackageManager().queryIntentContentProviders(intent, flags); }
final List<ResolveInfo> providers = pm.queryIntentContentProviders(intent, 0); for (ResolveInfo info : providers) { handleDocumentsProvider(info.providerInfo);