PackageManager pm=mContext.getPackageManager(); List<ResolveInfo> intentServices = pm.queryIntentServices(serviceIntent, 0); if (intentServices != null && !intentServices.isEmpty())
public static boolean isAvailable(Context context) { Intent intent = new Intent(OpenPgpApi.SERVICE_INTENT_2); List<ResolveInfo> resInfo = context.getPackageManager().queryIntentServices(intent, 0); return !resInfo.isEmpty(); }
private boolean isApgInstalled(Context context) { Intent intent = new Intent("org.openintents.openpgp.IOpenPgpService"); intent.setPackage(PACKAGE_NAME_APG); List<ResolveInfo> resInfo = context.getPackageManager().queryIntentServices(intent, 0); return resInfo != null && !resInfo.isEmpty(); }
private boolean isServiceEnabled(@NonNull Context context, @NonNull Class<? extends Service> clazz) { // on some rooted devices user can disable services try { Intent intent = new Intent(context, clazz); List<ResolveInfo> resolveInfos = context.getPackageManager().queryIntentServices(intent, 0); return resolveInfos != null && !resolveInfos.isEmpty(); } catch (Exception e) { return false; } }
public static List<String> getOpenPgpProviderPackages(Context context) { ArrayList<String> result = new ArrayList<>(); Intent intent = new Intent(OpenPgpApi.SERVICE_INTENT_2); List<ResolveInfo> resInfo = context.getPackageManager().queryIntentServices(intent, 0); if (resInfo == null) { return result; } for (ResolveInfo resolveInfo : resInfo) { if (resolveInfo.serviceInfo == null) { continue; } result.add(resolveInfo.serviceInfo.packageName); } return result; }
private void verifyServiceDeclaration() { final PackageManager packageManager = mContext.getPackageManager(); final Intent intent = new Intent(mContext, BeaconService.class); List<ResolveInfo> resolveInfo = packageManager.queryIntentServices(intent, PackageManager.MATCH_DEFAULT_ONLY); if (resolveInfo != null && resolveInfo.isEmpty()) { throw new ServiceNotDeclaredException(); } }
public static boolean isIabServiceAvailable(Context context) { final PackageManager packageManager = context.getPackageManager(); List<ResolveInfo> list = packageManager.queryIntentServices(getBindServiceIntent(), 0); return list != null && list.size() > 0; }
public static String getOpenPgpProviderName(PackageManager packageManager, String openPgpProvider) { Intent intent = new Intent(OpenPgpApi.SERVICE_INTENT_2); intent.setPackage(openPgpProvider); List<ResolveInfo> resInfo = packageManager.queryIntentServices(intent, 0); if (resInfo == null) { return null; } for (ResolveInfo resolveInfo : resInfo) { if (resolveInfo.serviceInfo == null) { continue; } return String.valueOf(resolveInfo.serviceInfo.loadLabel(packageManager)); } return null; }
@Test public void queryIntentServices_fromManifest() { Intent i = new Intent("org.robolectric.ACTION_DIFFERENT_PACKAGE"); i.addCategory(Intent.CATEGORY_LAUNCHER); i.setType("image/jpeg"); List<ResolveInfo> services = packageManager.queryIntentServices(i, 0); assertThat(services).isNotEmpty(); }
@Test public void queryIntentServices_EmptyResult() throws Exception { Intent i = new Intent(Intent.ACTION_MAIN, null); i.addCategory(Intent.CATEGORY_LAUNCHER); List<ResolveInfo> activities = packageManager.queryIntentServices(i, 0); assertThat(activities).isEmpty(); }
private ArgumentCaptor<Intent> mockPackageManagerInfo() { PackageManager packageManager = mock(PackageManager.class); when(mMockContext.getPackageManager()).thenReturn(packageManager); ArgumentCaptor<Intent> intentArgCaptor = ArgumentCaptor.forClass(Intent.class); ResolveInfo info = new ResolveInfo(); info.serviceInfo = new ServiceInfo(); info.serviceInfo.enabled = true; // noinspection WrongConstant when(packageManager.queryIntentServices(intentArgCaptor.capture(), eq(0))) .thenReturn(Arrays.asList(info)); return intentArgCaptor; }
@Test public void queryIntentServices_noFlags() throws Exception { List<ResolveInfo> result = pm.queryIntentServices(new Intent(context, TestService.class), 0); assertThat(result).hasSize(1); }
@Test public void queryIntentServices_MatchWithExplicitIntent() throws Exception { Intent i = new Intent(); i.setClassName(ApplicationProvider.getApplicationContext(), "com.foo.Service"); List<ResolveInfo> services = packageManager.queryIntentServices(i, 0); assertThat(services).isNotNull(); assertThat(services).hasSize(1); assertThat(services.get(0).resolvePackageName).isEqualTo("org.robolectric"); assertThat(services.get(0).serviceInfo.name).isEqualTo("com.foo.Service"); }
@Test public void validateService_noSuchService() { when(mockContext.getPackageManager()).thenReturn(packageManagerMock); when(packageManagerMock.queryIntentServices(any(Intent.class), eq(0))) .thenReturn(Collections.<ResolveInfo>emptyList()); when(mockContext.getPackageName()).thenReturn("package"); List<String> errors = validator.validateService("service"); assertNull(errors); verify(packageManagerMock).queryIntentServices(intentCaptor.capture(), eq(0)); Intent intent = intentCaptor.getValue(); assertEquals(JobService.ACTION_EXECUTE, intent.getAction()); assertEquals(new ComponentName("package", "service"), intent.getComponent()); }
@Test @Config(minSdk = LOLLIPOP) public void queryIntentServices_appHidden_dontIncludeUninstalled() { String packageName = ApplicationProvider.getApplicationContext().getPackageName(); packageManager.setApplicationHiddenSettingAsUser( packageName, /* hidden= */ true, /* user= */ null); Intent i = new Intent(); i.setClassName(ApplicationProvider.getApplicationContext(), "com.foo.Service"); assertThat(packageManager.queryIntentServices(i, /* flags= */ 0)).isEmpty(); }
@Test public void validateService_noActiveService() { when(mockContext.getPackageManager()).thenReturn(packageManagerMock); ResolveInfo resolveInfo = new ResolveInfo(); resolveInfo.serviceInfo = new ServiceInfo(); resolveInfo.serviceInfo.enabled = false; when(packageManagerMock.queryIntentServices(any(Intent.class), eq(0))) .thenReturn(Arrays.asList(resolveInfo)); when(mockContext.getPackageName()).thenReturn("package"); List<String> errors = validator.validateService("service"); assertTrue(errors.contains("service is disabled.")); }
@Test @Config(minSdk = LOLLIPOP) public void queryIntentServices_appHidden_includeUninstalled() { String packageName = ApplicationProvider.getApplicationContext().getPackageName(); packageManager.setApplicationHiddenSettingAsUser( packageName, /* hidden= */ true, /* user= */ null); Intent i = new Intent(); i.setClassName(ApplicationProvider.getApplicationContext(), "com.foo.Service"); List<ResolveInfo> services = packageManager.queryIntentServices(i, MATCH_UNINSTALLED_PACKAGES); assertThat(services).hasSize(1); assertThat(services.get(0).resolvePackageName).isEqualTo(packageName); assertThat(services.get(0).serviceInfo.name).isEqualTo("com.foo.Service"); }
@Test public void verifyCreateSuccessful() { PackageManager packageManager = mock(PackageManager.class); when(packageManager.queryIntentServices(any(Intent.class), anyInt())).thenReturn(Collections.singletonList(new ResolveInfo())); when(packageManager.queryBroadcastReceivers(any(Intent.class), anyInt())).thenReturn(Collections.singletonList(new ResolveInfo())); Context context = mockContext(); when(context.getPackageManager()).thenReturn(packageManager); JobManager.create(context); }
@Test public void queryIntentServices_Match() throws Exception { Intent i = new Intent(Intent.ACTION_MAIN, null); ResolveInfo info = new ResolveInfo(); info.serviceInfo = new ServiceInfo(); info.nonLocalizedLabel = TEST_PACKAGE_LABEL; shadowPackageManager.addResolveInfoForIntent(i, info); List<ResolveInfo> services = packageManager.queryIntentServices(i, 0); assertThat(services).hasSize(1); assertThat(services.get(0).nonLocalizedLabel.toString()).isEqualTo(TEST_PACKAGE_LABEL); }
private void mockChromeCustomTabsSupported(final boolean supported, final String packageName) { final List<ResolveInfo> resolveInfos = new ArrayList<>(); ResolveInfo resolveInfo = new ResolveInfo(); ServiceInfo serviceInfo = new ServiceInfo(); serviceInfo.packageName = packageName; resolveInfo.serviceInfo = serviceInfo; if (supported) { resolveInfos.add(resolveInfo); } final PackageManager packageManager = mock(PackageManager.class); when(packageManager.queryIntentServices(any(Intent.class), anyInt())) .thenReturn(resolveInfos); activity = mock(FacebookActivity.class); when(mockLoginClient.getActivity()).thenReturn(activity); when(activity.getPackageManager()).thenReturn(packageManager); }