Files
rr3-apk/decompiled-community/sources/androidx/emoji2/text/DefaultEmojiCompatConfig.java
Daniel Elliott c080f0d97f Add Discord community version (64-bit only)
- Added realracing3-community.apk (71.57 MB)
- Removed 32-bit support (armeabi-v7a)
- Only includes arm64-v8a libraries
- Decompiled source code included
- Added README-community.md with analysis
2026-02-18 15:48:36 -08:00

171 lines
7.1 KiB
Java

package androidx.emoji2.text;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.ProviderInfo;
import android.content.pm.ResolveInfo;
import android.content.pm.Signature;
import android.os.Build;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.annotation.RestrictTo;
import androidx.annotation.VisibleForTesting;
import androidx.core.provider.FontRequest;
import androidx.core.util.Preconditions;
import androidx.emoji2.text.EmojiCompat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
/* loaded from: classes.dex */
public final class DefaultEmojiCompatConfig {
private DefaultEmojiCompatConfig() {
}
@Nullable
public static FontRequestEmojiCompatConfig create(@NonNull Context context) {
return (FontRequestEmojiCompatConfig) new DefaultEmojiCompatConfigFactory(null).create(context);
}
@RestrictTo({RestrictTo.Scope.LIBRARY})
public static class DefaultEmojiCompatConfigFactory {
@NonNull
private static final String DEFAULT_EMOJI_QUERY = "emojicompat-emoji-font";
@NonNull
private static final String INTENT_LOAD_EMOJI_FONT = "androidx.content.action.LOAD_EMOJI_FONT";
@NonNull
private static final String TAG = "emoji2.text.DefaultEmojiConfig";
private final DefaultEmojiCompatConfigHelper mHelper;
@RestrictTo({RestrictTo.Scope.LIBRARY})
public DefaultEmojiCompatConfigFactory(@Nullable DefaultEmojiCompatConfigHelper defaultEmojiCompatConfigHelper) {
this.mHelper = defaultEmojiCompatConfigHelper == null ? getHelperForApi() : defaultEmojiCompatConfigHelper;
}
@Nullable
@RestrictTo({RestrictTo.Scope.LIBRARY})
public EmojiCompat.Config create(@NonNull Context context) {
return configOrNull(context, queryForDefaultFontRequest(context));
}
@Nullable
private EmojiCompat.Config configOrNull(@NonNull Context context, @Nullable FontRequest fontRequest) {
if (fontRequest == null) {
return null;
}
return new FontRequestEmojiCompatConfig(context, fontRequest);
}
@Nullable
@RestrictTo({RestrictTo.Scope.LIBRARY})
@VisibleForTesting
public FontRequest queryForDefaultFontRequest(@NonNull Context context) {
PackageManager packageManager = context.getPackageManager();
Preconditions.checkNotNull(packageManager, "Package manager required to locate emoji font provider");
ProviderInfo queryDefaultInstalledContentProvider = queryDefaultInstalledContentProvider(packageManager);
if (queryDefaultInstalledContentProvider == null) {
return null;
}
try {
return generateFontRequestFrom(queryDefaultInstalledContentProvider, packageManager);
} catch (PackageManager.NameNotFoundException e) {
Log.wtf(TAG, e);
return null;
}
}
@Nullable
private ProviderInfo queryDefaultInstalledContentProvider(@NonNull PackageManager packageManager) {
Iterator<ResolveInfo> it = this.mHelper.queryIntentContentProviders(packageManager, new Intent(INTENT_LOAD_EMOJI_FONT), 0).iterator();
while (it.hasNext()) {
ProviderInfo providerInfo = this.mHelper.getProviderInfo(it.next());
if (hasFlagSystem(providerInfo)) {
return providerInfo;
}
}
return null;
}
private boolean hasFlagSystem(@Nullable ProviderInfo providerInfo) {
ApplicationInfo applicationInfo;
return (providerInfo == null || (applicationInfo = providerInfo.applicationInfo) == null || (applicationInfo.flags & 1) != 1) ? false : true;
}
@NonNull
private FontRequest generateFontRequestFrom(@NonNull ProviderInfo providerInfo, @NonNull PackageManager packageManager) throws PackageManager.NameNotFoundException {
String str = providerInfo.authority;
String str2 = providerInfo.packageName;
return new FontRequest(str, str2, DEFAULT_EMOJI_QUERY, convertToByteArray(this.mHelper.getSigningSignatures(packageManager, str2)));
}
@NonNull
private List<List<byte[]>> convertToByteArray(@NonNull Signature[] signatureArr) {
ArrayList arrayList = new ArrayList();
for (Signature signature : signatureArr) {
arrayList.add(signature.toByteArray());
}
return Collections.singletonList(arrayList);
}
@NonNull
private static DefaultEmojiCompatConfigHelper getHelperForApi() {
if (Build.VERSION.SDK_INT >= 28) {
return new DefaultEmojiCompatConfigHelper_API28();
}
return new DefaultEmojiCompatConfigHelper_API19();
}
}
@RestrictTo({RestrictTo.Scope.LIBRARY})
public static class DefaultEmojiCompatConfigHelper {
@NonNull
public Signature[] getSigningSignatures(@NonNull PackageManager packageManager, @NonNull String str) throws PackageManager.NameNotFoundException {
return packageManager.getPackageInfo(str, 64).signatures;
}
@NonNull
public List<ResolveInfo> queryIntentContentProviders(@NonNull PackageManager packageManager, @NonNull Intent intent, int i) {
return Collections.emptyList();
}
@Nullable
public ProviderInfo getProviderInfo(@NonNull ResolveInfo resolveInfo) {
throw new IllegalStateException("Unable to get provider info prior to API 19");
}
}
@RequiresApi(19)
@RestrictTo({RestrictTo.Scope.LIBRARY})
public static class DefaultEmojiCompatConfigHelper_API19 extends DefaultEmojiCompatConfigHelper {
@Override // androidx.emoji2.text.DefaultEmojiCompatConfig.DefaultEmojiCompatConfigHelper
@NonNull
public List<ResolveInfo> queryIntentContentProviders(@NonNull PackageManager packageManager, @NonNull Intent intent, int i) {
return packageManager.queryIntentContentProviders(intent, i);
}
@Override // androidx.emoji2.text.DefaultEmojiCompatConfig.DefaultEmojiCompatConfigHelper
@Nullable
public ProviderInfo getProviderInfo(@NonNull ResolveInfo resolveInfo) {
return resolveInfo.providerInfo;
}
}
@RequiresApi(28)
@RestrictTo({RestrictTo.Scope.LIBRARY})
public static class DefaultEmojiCompatConfigHelper_API28 extends DefaultEmojiCompatConfigHelper_API19 {
@Override // androidx.emoji2.text.DefaultEmojiCompatConfig.DefaultEmojiCompatConfigHelper
@NonNull
public Signature[] getSigningSignatures(@NonNull PackageManager packageManager, @NonNull String str) throws PackageManager.NameNotFoundException {
return packageManager.getPackageInfo(str, 64).signatures;
}
}
}