134 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			134 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package androidx.emoji2.text;
 | |
| 
 | |
| import android.content.Context;
 | |
| import android.content.Intent;
 | |
| 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.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() {
 | |
|     }
 | |
| 
 | |
|     public static FontRequestEmojiCompatConfig create(Context context) {
 | |
|         return (FontRequestEmojiCompatConfig) new DefaultEmojiCompatConfigFactory(null).create(context);
 | |
|     }
 | |
| 
 | |
|     public static class DefaultEmojiCompatConfigFactory {
 | |
|         private static final String DEFAULT_EMOJI_QUERY = "emojicompat-emoji-font";
 | |
|         private static final String INTENT_LOAD_EMOJI_FONT = "androidx.content.action.LOAD_EMOJI_FONT";
 | |
|         private static final String TAG = "emoji2.text.DefaultEmojiConfig";
 | |
|         private final DefaultEmojiCompatConfigHelper mHelper;
 | |
| 
 | |
|         public DefaultEmojiCompatConfigFactory(DefaultEmojiCompatConfigHelper defaultEmojiCompatConfigHelper) {
 | |
|             this.mHelper = defaultEmojiCompatConfigHelper == null ? getHelperForApi() : defaultEmojiCompatConfigHelper;
 | |
|         }
 | |
| 
 | |
|         public EmojiCompat.Config create(Context context) {
 | |
|             return configOrNull(context, queryForDefaultFontRequest(context));
 | |
|         }
 | |
| 
 | |
|         private EmojiCompat.Config configOrNull(Context context, FontRequest fontRequest) {
 | |
|             if (fontRequest == null) {
 | |
|                 return null;
 | |
|             }
 | |
|             return new FontRequestEmojiCompatConfig(context, fontRequest);
 | |
|         }
 | |
| 
 | |
|         FontRequest queryForDefaultFontRequest(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;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         private ProviderInfo queryDefaultInstalledContentProvider(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(ProviderInfo providerInfo) {
 | |
|             return (providerInfo == null || providerInfo.applicationInfo == null || (providerInfo.applicationInfo.flags & 1) != 1) ? false : true;
 | |
|         }
 | |
| 
 | |
|         private FontRequest generateFontRequestFrom(ProviderInfo providerInfo, 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)));
 | |
|         }
 | |
| 
 | |
|         private List<List<byte[]>> convertToByteArray(Signature[] signatureArr) {
 | |
|             ArrayList arrayList = new ArrayList();
 | |
|             for (Signature signature : signatureArr) {
 | |
|                 arrayList.add(signature.toByteArray());
 | |
|             }
 | |
|             return Collections.singletonList(arrayList);
 | |
|         }
 | |
| 
 | |
|         private static DefaultEmojiCompatConfigHelper getHelperForApi() {
 | |
|             if (Build.VERSION.SDK_INT >= 28) {
 | |
|                 return new DefaultEmojiCompatConfigHelper_API28();
 | |
|             }
 | |
|             return new DefaultEmojiCompatConfigHelper_API19();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public static class DefaultEmojiCompatConfigHelper {
 | |
|         public Signature[] getSigningSignatures(PackageManager packageManager, String str) throws PackageManager.NameNotFoundException {
 | |
|             return packageManager.getPackageInfo(str, 64).signatures;
 | |
|         }
 | |
| 
 | |
|         public List<ResolveInfo> queryIntentContentProviders(PackageManager packageManager, Intent intent, int i) {
 | |
|             return Collections.emptyList();
 | |
|         }
 | |
| 
 | |
|         public ProviderInfo getProviderInfo(ResolveInfo resolveInfo) {
 | |
|             throw new IllegalStateException("Unable to get provider info prior to API 19");
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public static class DefaultEmojiCompatConfigHelper_API19 extends DefaultEmojiCompatConfigHelper {
 | |
|         @Override // androidx.emoji2.text.DefaultEmojiCompatConfig.DefaultEmojiCompatConfigHelper
 | |
|         public List<ResolveInfo> queryIntentContentProviders(PackageManager packageManager, Intent intent, int i) {
 | |
|             return packageManager.queryIntentContentProviders(intent, i);
 | |
|         }
 | |
| 
 | |
|         @Override // androidx.emoji2.text.DefaultEmojiCompatConfig.DefaultEmojiCompatConfigHelper
 | |
|         public ProviderInfo getProviderInfo(ResolveInfo resolveInfo) {
 | |
|             return resolveInfo.providerInfo;
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public static class DefaultEmojiCompatConfigHelper_API28 extends DefaultEmojiCompatConfigHelper_API19 {
 | |
|         @Override // androidx.emoji2.text.DefaultEmojiCompatConfig.DefaultEmojiCompatConfigHelper
 | |
|         public Signature[] getSigningSignatures(PackageManager packageManager, String str) throws PackageManager.NameNotFoundException {
 | |
|             return packageManager.getPackageInfo(str, 64).signatures;
 | |
|         }
 | |
|     }
 | |
| }
 |