/** @deprecated Use {@link #installPackage(PackageInfo)} instead. */ @Deprecated public void addPackage(String packageName) { PackageInfo packageInfo = new PackageInfo(); packageInfo.packageName = packageName; ApplicationInfo applicationInfo = new ApplicationInfo(); applicationInfo.packageName = packageName; // TODO: setUpPackageStorage should be in installPackage but we need to fix all tests first setUpPackageStorage(applicationInfo); packageInfo.applicationInfo = applicationInfo; installPackage(packageInfo); }
public static ApplicationInfo generateApplicationInfo(VPackage p, int flags, PackageUserState state, int userId) { if (p == null) return null; if (!checkUseInstalledOrHidden(state, flags)) { return null; } // Make shallow copy so we can store the metadata/libraries safely ApplicationInfo ai = new ApplicationInfo(p.applicationInfo); if ((flags & PackageManager.GET_META_DATA) != 0) { ai.metaData = p.mAppMetaData; } initApplicationAsUser(ai, userId); return ai; }
@Before public void setUp() throws PackageManager.NameNotFoundException { MockitoAnnotations.initMocks(this); applicationInfo = new ApplicationInfo(); applicationInfo.metaData = new Bundle(); String packageName = "com.bumptech.test"; when(context.getPackageName()).thenReturn(packageName); PackageManager pm = mock(PackageManager.class); when(pm.getApplicationInfo(eq(packageName), eq(PackageManager.GET_META_DATA))) .thenReturn(applicationInfo); when(context.getPackageManager()).thenReturn(pm); parser = new ManifestParser(context); }
/** * Creates a {@link ResolveInfo}. * * @param displayName Display name. * @param packageName Package name. * @param activityName Activity name. * @return Resolve info instance. */ public static ResolveInfo newResolveInfo(String displayName, String packageName, String activityName) { ResolveInfo resInfo = new ResolveInfo(); ActivityInfo actInfo = new ActivityInfo(); actInfo.applicationInfo = new ApplicationInfo(); actInfo.packageName = packageName; actInfo.applicationInfo.packageName = packageName; actInfo.name = activityName; resInfo.activityInfo = actInfo; resInfo.nonLocalizedLabel = displayName; return resInfo; }
private static PackageInfo createPackageInfoWithPackageName(String packageName) { PackageInfo packageInfo = new PackageInfo(); packageInfo.packageName = packageName; packageInfo.applicationInfo = new ApplicationInfo(); packageInfo.applicationInfo.packageName = packageName; packageInfo.applicationInfo.name = TEST_PACKAGE_LABEL; return packageInfo; }
private ResolveInfo buildResolveInfo(final String pkg, final boolean service_or_receiver, final int uid) { final ResolveInfo r = new ResolveInfo() { @Override public String toString() { return "ResolveInfo{test}"; } }; final ComponentInfo info = service_or_receiver ? (r.serviceInfo = new ServiceInfo()) : (r.activityInfo = new ActivityInfo()); info.packageName = pkg; info.applicationInfo = new ApplicationInfo(); info.applicationInfo.packageName = pkg; info.applicationInfo.uid = uid; return r; } };
@Test public void getApplicationInfo_OtherApplication() throws Exception { PackageInfo packageInfo = new PackageInfo(); packageInfo.packageName = TEST_PACKAGE_NAME; packageInfo.applicationInfo = new ApplicationInfo(); packageInfo.applicationInfo.packageName = TEST_PACKAGE_NAME; packageInfo.applicationInfo.name = TEST_PACKAGE_LABEL; shadowPackageManager.installPackage(packageInfo); ApplicationInfo info = packageManager.getApplicationInfo(TEST_PACKAGE_NAME, 0); assertThat(info).isNotNull(); assertThat(info.packageName).isEqualTo(TEST_PACKAGE_NAME); assertThat(packageManager.getApplicationLabel(info).toString()).isEqualTo(TEST_PACKAGE_LABEL); }
@Test public void loadIcon_default() { ActivityInfo info = new ActivityInfo(); info.applicationInfo = new ApplicationInfo(); info.packageName = "testPackage"; info.name = "testName"; Drawable icon = info.loadIcon(packageManager); assertThat(icon).isNotNull(); }
@Test public void getServiceInfo_shouldFindServiceIfAddedInResolveInfo() throws Exception { ComponentName componentName = new ComponentName("com.test", "com.test.ServiceName"); ResolveInfo resolveInfo = new ResolveInfo(); resolveInfo.serviceInfo = new ServiceInfo(); resolveInfo.serviceInfo.name = componentName.getClassName(); resolveInfo.serviceInfo.applicationInfo = new ApplicationInfo(); resolveInfo.serviceInfo.applicationInfo.packageName = componentName.getPackageName(); shadowPackageManager.addResolveInfoForIntent(new Intent("RANDOM_ACTION"), resolveInfo); ServiceInfo serviceInfo = packageManager.getServiceInfo(componentName, 0); assertThat(serviceInfo).isNotNull(); }
@Test public void loadIcon_specified() { ActivityInfo info = new ActivityInfo(); info.applicationInfo = new ApplicationInfo(); info.packageName = "testPackage"; info.name = "testName"; info.icon = R.drawable.an_image; Drawable icon = info.loadIcon(packageManager); assertThat(icon).isNotNull(); }
info = new PackageInfo(); info.packageName = packageName; info.applicationInfo = new ApplicationInfo(); info.applicationInfo.packageName = packageName;
@Test public void getInstalledApplications() { List<ApplicationInfo> installedApplications = packageManager.getInstalledApplications(0); // Default should include the application under test assertThat(installedApplications).hasSize(1); assertThat(installedApplications.get(0).packageName).isEqualTo("org.robolectric"); PackageInfo packageInfo = new PackageInfo(); packageInfo.packageName = "org.other"; packageInfo.applicationInfo = new ApplicationInfo(); packageInfo.applicationInfo.packageName = "org.other"; shadowPackageManager.installPackage(packageInfo); installedApplications = packageManager.getInstalledApplications(0); assertThat(installedApplications).hasSize(2); assertThat(installedApplications.get(1).packageName).isEqualTo("org.other"); }
@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"); }
@Test public void getResourcesForApplication_anotherPackage() throws Exception { PackageInfo packageInfo = new PackageInfo(); packageInfo.packageName = "another.package"; ApplicationInfo applicationInfo = new ApplicationInfo(); applicationInfo.packageName = "another.package"; packageInfo.applicationInfo = applicationInfo; shadowPackageManager.installPackage(packageInfo); assertThat(packageManager.getResourcesForApplication("another.package")).isNotNull(); assertThat(packageManager.getResourcesForApplication("another.package")) .isNotEqualTo(ApplicationProvider.getApplicationContext().getResources()); }
@Test public void getPackageArchiveInfo() { ApplicationInfo appInfo = new ApplicationInfo(); appInfo.flags = ApplicationInfo.FLAG_INSTALLED; appInfo.packageName = TEST_PACKAGE_NAME; appInfo.sourceDir = TEST_APP_PATH; appInfo.name = TEST_PACKAGE_LABEL; PackageInfo packageInfo = new PackageInfo(); packageInfo.packageName = TEST_PACKAGE_NAME; packageInfo.applicationInfo = appInfo; shadowPackageManager.installPackage(packageInfo); PackageInfo packageInfoResult = shadowPackageManager.getPackageArchiveInfo(TEST_APP_PATH, 0); assertThat(packageInfoResult).isNotNull(); ApplicationInfo applicationInfo = packageInfoResult.applicationInfo; assertThat(applicationInfo).isInstanceOf(ApplicationInfo.class); assertThat(applicationInfo.packageName).isEqualTo(TEST_PACKAGE_NAME); assertThat(applicationInfo.sourceDir).isEqualTo(TEST_APP_PATH); }
@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 public void removePackage_shouldHideItFromGetApplicationInfo() { PackageInfo packageInfo = new PackageInfo(); packageInfo.packageName = TEST_PACKAGE_NAME; packageInfo.applicationInfo = new ApplicationInfo(); packageInfo.applicationInfo.packageName = TEST_PACKAGE_NAME; packageInfo.applicationInfo.name = TEST_PACKAGE_LABEL; shadowPackageManager.installPackage(packageInfo); shadowPackageManager.removePackage(TEST_PACKAGE_NAME); try { packageManager.getApplicationInfo(TEST_PACKAGE_NAME, 0); fail("NameNotFoundException not thrown"); } catch (NameNotFoundException e) { // expected } }
@Test public void packageInstallerAndGetPackageArchiveInfo() { ApplicationInfo appInfo = new ApplicationInfo(); appInfo.flags = ApplicationInfo.FLAG_INSTALLED; appInfo.packageName = TEST_PACKAGE_NAME; appInfo.sourceDir = TEST_APP_PATH; appInfo.name = TEST_PACKAGE_LABEL; PackageInfo packageInfo = new PackageInfo(); packageInfo.packageName = TEST_PACKAGE_NAME; packageInfo.applicationInfo = appInfo; shadowPackageManager.installPackage(packageInfo); PackageInfo packageInfoResult = shadowPackageManager.getPackageArchiveInfo(TEST_APP_PATH, 0); assertThat(packageInfoResult).isNotNull(); ApplicationInfo applicationInfo = packageInfoResult.applicationInfo; assertThat(applicationInfo).isInstanceOf(ApplicationInfo.class); assertThat(applicationInfo.packageName).isEqualTo(TEST_PACKAGE_NAME); assertThat(applicationInfo.sourceDir).isEqualTo(TEST_APP_PATH); }
@Test public void addPackageShouldUseUidToProvidePackageName() throws Exception { PackageInfo packageInfoOne = new PackageInfo(); packageInfoOne.packageName = "package.one"; packageInfoOne.applicationInfo = new ApplicationInfo(); packageInfoOne.applicationInfo.uid = 1234; packageInfoOne.applicationInfo.packageName = packageInfoOne.packageName; shadowPackageManager.installPackage(packageInfoOne); PackageInfo packageInfoTwo = new PackageInfo(); packageInfoTwo.packageName = "package.two"; packageInfoTwo.applicationInfo = new ApplicationInfo(); packageInfoTwo.applicationInfo.uid = 1234; packageInfoTwo.applicationInfo.packageName = packageInfoTwo.packageName; shadowPackageManager.installPackage(packageInfoTwo); assertThat(packageManager.getPackagesForUid(1234)) .asList() .containsExactly("package.one", "package.two"); }
@Test @Config(minSdk = LOLLIPOP) public void setPersistentPreferrecActivity_exists() { ComponentName randomActivity = new ComponentName("random.package", "Activity"); shadowOf(devicePolicyManager).setDeviceOwner(testComponent); ResolveInfo resolveInfo = new ResolveInfo(); resolveInfo.activityInfo = new ActivityInfo(); resolveInfo.activityInfo.name = randomActivity.getClassName(); resolveInfo.activityInfo.applicationInfo = new ApplicationInfo(); resolveInfo.activityInfo.applicationInfo.packageName = randomActivity.getPackageName(); ResolveInfo resolveInfo2 = new ResolveInfo(); resolveInfo2.activityInfo = new ActivityInfo(resolveInfo.activityInfo); resolveInfo.activityInfo.name = "OtherActivity"; shadowOf(packageManager).setResolveInfosForIntent( new Intent(Intent.ACTION_MAIN), Arrays.asList(resolveInfo, resolveInfo2)); shadowOf(packageManager).setShouldShowActivityChooser(true); ResolveInfo resolvedActivity = packageManager.resolveActivity(new Intent(Intent.ACTION_MAIN), 0); assertThat(resolvedActivity.activityInfo.packageName) .isNotEqualTo(randomActivity.getPackageName()); devicePolicyManager.addPersistentPreferredActivity( testComponent, new IntentFilter(Intent.ACTION_MAIN), randomActivity); resolvedActivity = packageManager.resolveActivity(new Intent(Intent.ACTION_MAIN), 0); assertThat(resolvedActivity.activityInfo.packageName) .isEqualTo(randomActivity.getPackageName()); assertThat(resolvedActivity.activityInfo.name).isEqualTo(randomActivity.getClassName()); }