1 package org.robolectric.shadows; 2 3 import android.content.pm.ActivityInfo; 4 import android.content.pm.ApplicationInfo; 5 import android.content.pm.ResolveInfo; 6 7 /** Utilities for {@link ResolveInfo}. */ 8 // TODO: Create a ResolveInfoBuilder in androidx and migrate factory methods there. 9 public class ShadowResolveInfo { 10 11 /** 12 * Creates a {@link ResolveInfo}. 13 * 14 * @param displayName Display name. 15 * @param packageName Package name. 16 * @return Resolve info instance. 17 */ newResolveInfo(String displayName, String packageName)18 public static ResolveInfo newResolveInfo(String displayName, String packageName) { 19 return newResolveInfo(displayName, packageName, packageName + ".TestActivity"); 20 } 21 22 /** 23 * Creates a {@link ResolveInfo}. 24 * 25 * @param displayName Display name. 26 * @param packageName Package name. 27 * @param activityName Activity name. 28 * @return Resolve info instance. 29 */ newResolveInfo( String displayName, String packageName, String activityName)30 public static ResolveInfo newResolveInfo( 31 String displayName, String packageName, String activityName) { 32 ResolveInfo resInfo = new ResolveInfo(); 33 ActivityInfo actInfo = new ActivityInfo(); 34 actInfo.applicationInfo = new ApplicationInfo(); 35 actInfo.packageName = packageName; 36 actInfo.applicationInfo.packageName = packageName; 37 actInfo.name = activityName; 38 resInfo.activityInfo = actInfo; 39 resInfo.nonLocalizedLabel = displayName; 40 return resInfo; 41 } 42 43 /** 44 * Copies {@link ResolveInfo}. 45 * 46 * <p>Note that this is shallow copy as performed by the copy constructor existing in API 17. 47 */ newResolveInfo(ResolveInfo orig)48 public static ResolveInfo newResolveInfo(ResolveInfo orig) { 49 ResolveInfo copy = new ResolveInfo(orig); 50 // For some reason isDefault field is not copied by the copy constructor. 51 copy.isDefault = orig.isDefault; 52 return copy; 53 } 54 } 55