package androidx.core.app; import android.app.Activity; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; import android.os.Build; import android.os.Bundle; import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import c.d.b.a.a; public final class NavUtils { public static final String PARENT_ACTIVITY = "android.support.PARENT_ACTIVITY"; private static final String TAG = "NavUtils"; private NavUtils() { } @Nullable public static Intent getParentActivityIntent(@NonNull Activity activity) { Intent parentActivityIntent = activity.getParentActivityIntent(); if (parentActivityIntent != null) { return parentActivityIntent; } String parentActivityName = getParentActivityName(activity); if (parentActivityName == null) { return null; } ComponentName componentName = new ComponentName(activity, parentActivityName); try { return getParentActivityName(activity, componentName) == null ? Intent.makeMainActivity(componentName) : new Intent().setComponent(componentName); } catch (PackageManager.NameNotFoundException unused) { Log.e(TAG, "getParentActivityIntent: bad parentActivityName '" + parentActivityName + "' in manifest"); return null; } } @Nullable public static Intent getParentActivityIntent(@NonNull Context context, @NonNull ComponentName componentName) throws PackageManager.NameNotFoundException { String parentActivityName = getParentActivityName(context, componentName); if (parentActivityName == null) { return null; } ComponentName componentName2 = new ComponentName(componentName.getPackageName(), parentActivityName); return getParentActivityName(context, componentName2) == null ? Intent.makeMainActivity(componentName2) : new Intent().setComponent(componentName2); } @Nullable public static Intent getParentActivityIntent(@NonNull Context context, @NonNull Class cls) throws PackageManager.NameNotFoundException { String parentActivityName = getParentActivityName(context, new ComponentName(context, cls)); if (parentActivityName == null) { return null; } ComponentName componentName = new ComponentName(context, parentActivityName); return getParentActivityName(context, componentName) == null ? Intent.makeMainActivity(componentName) : new Intent().setComponent(componentName); } @Nullable public static String getParentActivityName(@NonNull Activity activity) { try { return getParentActivityName(activity, activity.getComponentName()); } catch (PackageManager.NameNotFoundException e) { throw new IllegalArgumentException(e); } } @Nullable public static String getParentActivityName(@NonNull Context context, @NonNull ComponentName componentName) throws PackageManager.NameNotFoundException { String string; PackageManager packageManager = context.getPackageManager(); int i = Build.VERSION.SDK_INT; int i2 = 640; if (i >= 29) { i2 = 269222528; } else if (i >= 24) { i2 = 787072; } ActivityInfo activityInfo = packageManager.getActivityInfo(componentName, i2); String str = activityInfo.parentActivityName; if (str != null) { return str; } Bundle bundle = activityInfo.metaData; if (bundle == null || (string = bundle.getString(PARENT_ACTIVITY)) == null) { return null; } if (string.charAt(0) != '.') { return string; } return context.getPackageName() + string; } public static void navigateUpFromSameTask(@NonNull Activity activity) { Intent parentActivityIntent = getParentActivityIntent(activity); if (parentActivityIntent != null) { navigateUpTo(activity, parentActivityIntent); return; } StringBuilder L = a.L("Activity "); L.append(activity.getClass().getSimpleName()); L.append(" does not have a parent activity name specified. (Did you forget to add the android.support.PARENT_ACTIVITY element in your manifest?)"); throw new IllegalArgumentException(L.toString()); } public static void navigateUpTo(@NonNull Activity activity, @NonNull Intent intent) { activity.navigateUpTo(intent); } public static boolean shouldUpRecreateTask(@NonNull Activity activity, @NonNull Intent intent) { return activity.shouldUpRecreateTask(intent); } }