package androidx.core.content.pm; import android.app.ActivityManager; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentSender; import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.content.pm.ShortcutInfo; import android.content.pm.ShortcutManager; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Build; import android.os.Bundle; import android.text.TextUtils; import android.util.DisplayMetrics; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; import androidx.annotation.RestrictTo; import androidx.annotation.VisibleForTesting; import androidx.appcompat.widget.ActivityChooserModel; import androidx.core.content.ContextCompat; import androidx.core.content.pm.ShortcutInfoCompat; import androidx.core.content.pm.ShortcutInfoCompatSaver; import androidx.core.graphics.drawable.IconCompat; import androidx.core.util.Preconditions; import java.io.InputStream; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Iterator; import java.util.List; public class ShortcutManagerCompat { @VisibleForTesting public static final String ACTION_INSTALL_SHORTCUT = "com.android.launcher.action.INSTALL_SHORTCUT"; private static final int DEFAULT_MAX_ICON_DIMENSION_DP = 96; private static final int DEFAULT_MAX_ICON_DIMENSION_LOWRAM_DP = 48; public static final String EXTRA_SHORTCUT_ID = "android.intent.extra.shortcut.ID"; public static final int FLAG_MATCH_CACHED = 8; public static final int FLAG_MATCH_DYNAMIC = 2; public static final int FLAG_MATCH_MANIFEST = 1; public static final int FLAG_MATCH_PINNED = 4; @VisibleForTesting public static final String INSTALL_SHORTCUT_PERMISSION = "com.android.launcher.permission.INSTALL_SHORTCUT"; private static final String SHORTCUT_LISTENER_INTENT_FILTER_ACTION = "androidx.core.content.pm.SHORTCUT_LISTENER"; private static final String SHORTCUT_LISTENER_META_DATA_KEY = "androidx.core.content.pm.shortcut_listener_impl"; private static volatile List sShortcutInfoChangeListeners; private static volatile ShortcutInfoCompatSaver sShortcutInfoCompatSaver; /* renamed from: androidx.core.content.pm.ShortcutManagerCompat$1 reason: invalid class name */ public class AnonymousClass1 extends BroadcastReceiver { public final /* synthetic */ IntentSender val$callback; public AnonymousClass1(IntentSender intentSender) { this.val$callback = intentSender; } @Override // android.content.BroadcastReceiver public void onReceive(Context context, Intent intent) { try { this.val$callback.sendIntent(context, 0, null, null, null); } catch (IntentSender.SendIntentException unused) { } } } @RequiresApi(25) public static class Api25Impl { private Api25Impl() { } public static String getShortcutInfoWithLowestRank(@NonNull List list) { int i = -1; String str = null; for (ShortcutInfo shortcutInfo : list) { if (shortcutInfo.getRank() > i) { str = shortcutInfo.getId(); i = shortcutInfo.getRank(); } } return str; } } @Retention(RetentionPolicy.SOURCE) @RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX}) public @interface ShortcutMatchFlags { } private ShortcutManagerCompat() { } public static boolean addDynamicShortcuts(@NonNull Context context, @NonNull List list) { int i = Build.VERSION.SDK_INT; if (i <= 29) { convertUriIconsToBitmapIcons(context, list); } if (i >= 25) { ArrayList arrayList = new ArrayList(); for (ShortcutInfoCompat shortcutInfoCompat : list) { arrayList.add(shortcutInfoCompat.toShortcutInfo()); } if (!((ShortcutManager) context.getSystemService(ShortcutManager.class)).addDynamicShortcuts(arrayList)) { return false; } } getShortcutInfoSaverInstance(context).addShortcuts(list); for (ShortcutInfoChangeListener shortcutInfoChangeListener : getShortcutInfoListeners(context)) { shortcutInfoChangeListener.onShortcutAdded(list); } return true; } @VisibleForTesting public static boolean convertUriIconToBitmapIcon(@NonNull Context context, @NonNull ShortcutInfoCompat shortcutInfoCompat) { Bitmap decodeStream; IconCompat iconCompat = shortcutInfoCompat.mIcon; if (iconCompat == null) { return false; } int i = iconCompat.mType; if (i != 6 && i != 4) { return true; } InputStream uriInputStream = iconCompat.getUriInputStream(context); if (uriInputStream == null || (decodeStream = BitmapFactory.decodeStream(uriInputStream)) == null) { return false; } shortcutInfoCompat.mIcon = i == 6 ? IconCompat.createWithAdaptiveBitmap(decodeStream) : IconCompat.createWithBitmap(decodeStream); return true; } @VisibleForTesting public static void convertUriIconsToBitmapIcons(@NonNull Context context, @NonNull List list) { Iterator it = new ArrayList(list).iterator(); while (it.hasNext()) { ShortcutInfoCompat shortcutInfoCompat = (ShortcutInfoCompat) it.next(); if (!convertUriIconToBitmapIcon(context, shortcutInfoCompat)) { list.remove(shortcutInfoCompat); } } } @NonNull public static Intent createShortcutResultIntent(@NonNull Context context, @NonNull ShortcutInfoCompat shortcutInfoCompat) { Intent createShortcutResultIntent = Build.VERSION.SDK_INT >= 26 ? ((ShortcutManager) context.getSystemService(ShortcutManager.class)).createShortcutResultIntent(shortcutInfoCompat.toShortcutInfo()) : null; if (createShortcutResultIntent == null) { createShortcutResultIntent = new Intent(); } return shortcutInfoCompat.addToIntent(createShortcutResultIntent); } public static void disableShortcuts(@NonNull Context context, @NonNull List list, @Nullable CharSequence charSequence) { if (Build.VERSION.SDK_INT >= 25) { ((ShortcutManager) context.getSystemService(ShortcutManager.class)).disableShortcuts(list, charSequence); } getShortcutInfoSaverInstance(context).removeShortcuts(list); for (ShortcutInfoChangeListener shortcutInfoChangeListener : getShortcutInfoListeners(context)) { shortcutInfoChangeListener.onShortcutRemoved(list); } } public static void enableShortcuts(@NonNull Context context, @NonNull List list) { if (Build.VERSION.SDK_INT >= 25) { ArrayList arrayList = new ArrayList(list.size()); for (ShortcutInfoCompat shortcutInfoCompat : list) { arrayList.add(shortcutInfoCompat.mId); } ((ShortcutManager) context.getSystemService(ShortcutManager.class)).enableShortcuts(arrayList); } getShortcutInfoSaverInstance(context).addShortcuts(list); for (ShortcutInfoChangeListener shortcutInfoChangeListener : getShortcutInfoListeners(context)) { shortcutInfoChangeListener.onShortcutAdded(list); } } @NonNull public static List getDynamicShortcuts(@NonNull Context context) { if (Build.VERSION.SDK_INT >= 25) { List dynamicShortcuts = ((ShortcutManager) context.getSystemService(ShortcutManager.class)).getDynamicShortcuts(); ArrayList arrayList = new ArrayList(dynamicShortcuts.size()); for (ShortcutInfo shortcutInfo : dynamicShortcuts) { arrayList.add(new ShortcutInfoCompat.Builder(context, shortcutInfo).build()); } return arrayList; } try { return getShortcutInfoSaverInstance(context).getShortcuts(); } catch (Exception unused) { return new ArrayList(); } } private static int getIconDimensionInternal(@NonNull Context context, boolean z2) { ActivityManager activityManager = (ActivityManager) context.getSystemService(ActivityChooserModel.ATTRIBUTE_ACTIVITY); int max = Math.max(1, activityManager == null || activityManager.isLowRamDevice() ? 48 : 96); DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics(); return (int) (((float) max) * ((z2 ? displayMetrics.xdpi : displayMetrics.ydpi) / 160.0f)); } public static int getIconMaxHeight(@NonNull Context context) { Preconditions.checkNotNull(context); return Build.VERSION.SDK_INT >= 25 ? ((ShortcutManager) context.getSystemService(ShortcutManager.class)).getIconMaxHeight() : getIconDimensionInternal(context, false); } public static int getIconMaxWidth(@NonNull Context context) { Preconditions.checkNotNull(context); return Build.VERSION.SDK_INT >= 25 ? ((ShortcutManager) context.getSystemService(ShortcutManager.class)).getIconMaxWidth() : getIconDimensionInternal(context, true); } public static int getMaxShortcutCountPerActivity(@NonNull Context context) { Preconditions.checkNotNull(context); if (Build.VERSION.SDK_INT >= 25) { return ((ShortcutManager) context.getSystemService(ShortcutManager.class)).getMaxShortcutCountPerActivity(); } return 5; } @VisibleForTesting public static List getShortcutInfoChangeListeners() { return sShortcutInfoChangeListeners; } private static String getShortcutInfoCompatWithLowestRank(@NonNull List list) { int i = -1; String str = null; for (ShortcutInfoCompat shortcutInfoCompat : list) { if (shortcutInfoCompat.getRank() > i) { str = shortcutInfoCompat.getId(); i = shortcutInfoCompat.getRank(); } } return str; } private static List getShortcutInfoListeners(Context context) { Bundle bundle; String string; if (sShortcutInfoChangeListeners == null) { ArrayList arrayList = new ArrayList(); PackageManager packageManager = context.getPackageManager(); Intent intent = new Intent(SHORTCUT_LISTENER_INTENT_FILTER_ACTION); intent.setPackage(context.getPackageName()); for (ResolveInfo resolveInfo : packageManager.queryIntentActivities(intent, 128)) { ActivityInfo activityInfo = resolveInfo.activityInfo; if (!(activityInfo == null || (bundle = activityInfo.metaData) == null || (string = bundle.getString(SHORTCUT_LISTENER_META_DATA_KEY)) == null)) { try { arrayList.add((ShortcutInfoChangeListener) Class.forName(string, false, ShortcutManagerCompat.class.getClassLoader()).getMethod("getInstance", Context.class).invoke(null, context)); } catch (Exception unused) { } } } if (sShortcutInfoChangeListeners == null) { sShortcutInfoChangeListeners = arrayList; } } return sShortcutInfoChangeListeners; } private static ShortcutInfoCompatSaver getShortcutInfoSaverInstance(Context context) { if (sShortcutInfoCompatSaver == null) { if (Build.VERSION.SDK_INT >= 23) { try { sShortcutInfoCompatSaver = (ShortcutInfoCompatSaver) Class.forName("androidx.sharetarget.ShortcutInfoCompatSaverImpl", false, ShortcutManagerCompat.class.getClassLoader()).getMethod("getInstance", Context.class).invoke(null, context); } catch (Exception unused) { } } if (sShortcutInfoCompatSaver == null) { sShortcutInfoCompatSaver = new ShortcutInfoCompatSaver.NoopImpl(); } } return sShortcutInfoCompatSaver; } @NonNull public static List getShortcuts(@NonNull Context context, int i) { int i2 = Build.VERSION.SDK_INT; if (i2 >= 30) { return ShortcutInfoCompat.fromShortcuts(context, ((ShortcutManager) context.getSystemService(ShortcutManager.class)).getShortcuts(i)); } if (i2 >= 25) { ShortcutManager shortcutManager = (ShortcutManager) context.getSystemService(ShortcutManager.class); ArrayList arrayList = new ArrayList(); if ((i & 1) != 0) { arrayList.addAll(shortcutManager.getManifestShortcuts()); } if ((i & 2) != 0) { arrayList.addAll(shortcutManager.getDynamicShortcuts()); } if ((i & 4) != 0) { arrayList.addAll(shortcutManager.getPinnedShortcuts()); } return ShortcutInfoCompat.fromShortcuts(context, arrayList); } if ((i & 2) != 0) { try { return getShortcutInfoSaverInstance(context).getShortcuts(); } catch (Exception unused) { } } return Collections.emptyList(); } public static boolean isRateLimitingActive(@NonNull Context context) { Preconditions.checkNotNull(context); return Build.VERSION.SDK_INT >= 25 ? ((ShortcutManager) context.getSystemService(ShortcutManager.class)).isRateLimitingActive() : getShortcuts(context, 3).size() == getMaxShortcutCountPerActivity(context); } /* JADX WARNING: Removed duplicated region for block: B:10:0x0036 */ public static boolean isRequestPinShortcutSupported(@NonNull Context context) { if (Build.VERSION.SDK_INT >= 26) { return ((ShortcutManager) context.getSystemService(ShortcutManager.class)).isRequestPinShortcutSupported(); } if (ContextCompat.checkSelfPermission(context, INSTALL_SHORTCUT_PERMISSION) != 0) { return false; } for (ResolveInfo resolveInfo : context.getPackageManager().queryBroadcastReceivers(new Intent(ACTION_INSTALL_SHORTCUT), 0)) { String str = resolveInfo.activityInfo.permission; if (TextUtils.isEmpty(str) || INSTALL_SHORTCUT_PERMISSION.equals(str)) { return true; } while (r4.hasNext()) { } } return false; } public static boolean pushDynamicShortcut(@NonNull Context context, @NonNull ShortcutInfoCompat shortcutInfoCompat) { Preconditions.checkNotNull(context); Preconditions.checkNotNull(shortcutInfoCompat); int maxShortcutCountPerActivity = getMaxShortcutCountPerActivity(context); if (maxShortcutCountPerActivity == 0) { return false; } int i = Build.VERSION.SDK_INT; if (i <= 29) { convertUriIconToBitmapIcon(context, shortcutInfoCompat); } if (i >= 30) { ((ShortcutManager) context.getSystemService(ShortcutManager.class)).pushDynamicShortcut(shortcutInfoCompat.toShortcutInfo()); } else if (i >= 25) { ShortcutManager shortcutManager = (ShortcutManager) context.getSystemService(ShortcutManager.class); if (shortcutManager.isRateLimitingActive()) { return false; } List dynamicShortcuts = shortcutManager.getDynamicShortcuts(); if (dynamicShortcuts.size() >= maxShortcutCountPerActivity) { shortcutManager.removeDynamicShortcuts(Arrays.asList(Api25Impl.getShortcutInfoWithLowestRank(dynamicShortcuts))); } shortcutManager.addDynamicShortcuts(Arrays.asList(shortcutInfoCompat.toShortcutInfo())); } ShortcutInfoCompatSaver shortcutInfoSaverInstance = getShortcutInfoSaverInstance(context); try { List shortcuts = shortcutInfoSaverInstance.getShortcuts(); if (shortcuts.size() >= maxShortcutCountPerActivity) { shortcutInfoSaverInstance.removeShortcuts(Arrays.asList(getShortcutInfoCompatWithLowestRank(shortcuts))); } shortcutInfoSaverInstance.addShortcuts(Arrays.asList(shortcutInfoCompat)); for (ShortcutInfoChangeListener shortcutInfoChangeListener : getShortcutInfoListeners(context)) { shortcutInfoChangeListener.onShortcutAdded(Collections.singletonList(shortcutInfoCompat)); } reportShortcutUsed(context, shortcutInfoCompat.getId()); return true; } catch (Exception unused) { for (ShortcutInfoChangeListener shortcutInfoChangeListener2 : getShortcutInfoListeners(context)) { shortcutInfoChangeListener2.onShortcutAdded(Collections.singletonList(shortcutInfoCompat)); } reportShortcutUsed(context, shortcutInfoCompat.getId()); return false; } catch (Throwable th) { for (ShortcutInfoChangeListener shortcutInfoChangeListener3 : getShortcutInfoListeners(context)) { shortcutInfoChangeListener3.onShortcutAdded(Collections.singletonList(shortcutInfoCompat)); } reportShortcutUsed(context, shortcutInfoCompat.getId()); throw th; } } public static void removeAllDynamicShortcuts(@NonNull Context context) { if (Build.VERSION.SDK_INT >= 25) { ((ShortcutManager) context.getSystemService(ShortcutManager.class)).removeAllDynamicShortcuts(); } getShortcutInfoSaverInstance(context).removeAllShortcuts(); for (ShortcutInfoChangeListener shortcutInfoChangeListener : getShortcutInfoListeners(context)) { shortcutInfoChangeListener.onAllShortcutsRemoved(); } } public static void removeDynamicShortcuts(@NonNull Context context, @NonNull List list) { if (Build.VERSION.SDK_INT >= 25) { ((ShortcutManager) context.getSystemService(ShortcutManager.class)).removeDynamicShortcuts(list); } getShortcutInfoSaverInstance(context).removeShortcuts(list); for (ShortcutInfoChangeListener shortcutInfoChangeListener : getShortcutInfoListeners(context)) { shortcutInfoChangeListener.onShortcutRemoved(list); } } public static void removeLongLivedShortcuts(@NonNull Context context, @NonNull List list) { if (Build.VERSION.SDK_INT < 30) { removeDynamicShortcuts(context, list); return; } ((ShortcutManager) context.getSystemService(ShortcutManager.class)).removeLongLivedShortcuts(list); getShortcutInfoSaverInstance(context).removeShortcuts(list); for (ShortcutInfoChangeListener shortcutInfoChangeListener : getShortcutInfoListeners(context)) { shortcutInfoChangeListener.onShortcutRemoved(list); } } public static void reportShortcutUsed(@NonNull Context context, @NonNull String str) { Preconditions.checkNotNull(context); Preconditions.checkNotNull(str); if (Build.VERSION.SDK_INT >= 25) { ((ShortcutManager) context.getSystemService(ShortcutManager.class)).reportShortcutUsed(str); } for (ShortcutInfoChangeListener shortcutInfoChangeListener : getShortcutInfoListeners(context)) { shortcutInfoChangeListener.onShortcutUsageReported(Collections.singletonList(str)); } } public static boolean requestPinShortcut(@NonNull Context context, @NonNull ShortcutInfoCompat shortcutInfoCompat, @Nullable IntentSender intentSender) { if (Build.VERSION.SDK_INT >= 26) { return ((ShortcutManager) context.getSystemService(ShortcutManager.class)).requestPinShortcut(shortcutInfoCompat.toShortcutInfo(), intentSender); } if (!isRequestPinShortcutSupported(context)) { return false; } Intent addToIntent = shortcutInfoCompat.addToIntent(new Intent(ACTION_INSTALL_SHORTCUT)); if (intentSender == null) { context.sendBroadcast(addToIntent); return true; } context.sendOrderedBroadcast(addToIntent, null, new AnonymousClass1(intentSender), null, -1, null, null); return true; } public static boolean setDynamicShortcuts(@NonNull Context context, @NonNull List list) { Preconditions.checkNotNull(context); Preconditions.checkNotNull(list); if (Build.VERSION.SDK_INT >= 25) { ArrayList arrayList = new ArrayList(list.size()); for (ShortcutInfoCompat shortcutInfoCompat : list) { arrayList.add(shortcutInfoCompat.toShortcutInfo()); } if (!((ShortcutManager) context.getSystemService(ShortcutManager.class)).setDynamicShortcuts(arrayList)) { return false; } } getShortcutInfoSaverInstance(context).removeAllShortcuts(); getShortcutInfoSaverInstance(context).addShortcuts(list); for (ShortcutInfoChangeListener shortcutInfoChangeListener : getShortcutInfoListeners(context)) { shortcutInfoChangeListener.onAllShortcutsRemoved(); shortcutInfoChangeListener.onShortcutAdded(list); } return true; } @VisibleForTesting public static void setShortcutInfoChangeListeners(List list) { sShortcutInfoChangeListeners = list; } @VisibleForTesting public static void setShortcutInfoCompatSaver(ShortcutInfoCompatSaver shortcutInfoCompatSaver) { sShortcutInfoCompatSaver = shortcutInfoCompatSaver; } public static boolean updateShortcuts(@NonNull Context context, @NonNull List list) { int i = Build.VERSION.SDK_INT; if (i <= 29) { convertUriIconsToBitmapIcons(context, list); } if (i >= 25) { ArrayList arrayList = new ArrayList(); for (ShortcutInfoCompat shortcutInfoCompat : list) { arrayList.add(shortcutInfoCompat.toShortcutInfo()); } if (!((ShortcutManager) context.getSystemService(ShortcutManager.class)).updateShortcuts(arrayList)) { return false; } } getShortcutInfoSaverInstance(context).addShortcuts(list); for (ShortcutInfoChangeListener shortcutInfoChangeListener : getShortcutInfoListeners(context)) { shortcutInfoChangeListener.onShortcutUpdated(list); } return true; } }