discord-jadx/app/src/main/java/androidx/core/content/pm/ShortcutManagerCompat.java

495 lines
23 KiB
Java

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<ShortcutInfoChangeListener> 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<ShortcutInfo> 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<ShortcutInfoCompat> 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<ShortcutInfoCompat> 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<String> 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<ShortcutInfoCompat> 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<ShortcutInfoCompat> getDynamicShortcuts(@NonNull Context context) {
if (Build.VERSION.SDK_INT >= 25) {
List<ShortcutInfo> 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<ShortcutInfoChangeListener> getShortcutInfoChangeListeners() {
return sShortcutInfoChangeListeners;
}
private static String getShortcutInfoCompatWithLowestRank(@NonNull List<ShortcutInfoCompat> 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<ShortcutInfoChangeListener> 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<ShortcutInfoCompat> 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<ShortcutInfo> 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<ShortcutInfoCompat> 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<String> 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<String> 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<ShortcutInfoCompat> 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<ShortcutInfoChangeListener> list) {
sShortcutInfoChangeListeners = list;
}
@VisibleForTesting
public static void setShortcutInfoCompatSaver(ShortcutInfoCompatSaver<Void> shortcutInfoCompatSaver) {
sShortcutInfoCompatSaver = shortcutInfoCompatSaver;
}
public static boolean updateShortcuts(@NonNull Context context, @NonNull List<ShortcutInfoCompat> 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;
}
}