package androidx.browser.customtabs; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.ResolveInfo; import android.net.Uri; import android.os.Bundle; import androidx.annotation.NonNull; import androidx.annotation.RestrictTo; import androidx.annotation.WorkerThread; import androidx.core.app.BundleCompat; import androidx.core.content.FileProvider; import java.io.File; public class TrustedWebUtils { @RestrictTo({RestrictTo.Scope.LIBRARY}) public static final String ACTION_MANAGE_TRUSTED_WEB_ACTIVITY_DATA = "android.support.customtabs.action.ACTION_MANAGE_TRUSTED_WEB_ACTIVITY_DATA"; public static final String EXTRA_LAUNCH_AS_TRUSTED_WEB_ACTIVITY = "android.support.customtabs.extra.LAUNCH_AS_TRUSTED_WEB_ACTIVITY"; private TrustedWebUtils() { } public static boolean areSplashScreensSupported(@NonNull Context context, @NonNull String str, @NonNull String str2) { IntentFilter intentFilter; ResolveInfo resolveService = context.getPackageManager().resolveService(new Intent().setAction("android.support.customtabs.action.CustomTabsService").setPackage(str), 64); if (resolveService == null || (intentFilter = resolveService.filter) == null) { return false; } return intentFilter.hasCategory(str2); } @Deprecated public static void launchAsTrustedWebActivity(@NonNull Context context, @NonNull CustomTabsIntent customTabsIntent, @NonNull Uri uri) { if (BundleCompat.getBinder(customTabsIntent.intent.getExtras(), "android.support.customtabs.extra.SESSION") != null) { customTabsIntent.intent.putExtra("android.support.customtabs.extra.LAUNCH_AS_TRUSTED_WEB_ACTIVITY", true); customTabsIntent.launchUrl(context, uri); return; } throw new IllegalArgumentException("Given CustomTabsIntent should be associated with a valid CustomTabsSession"); } @RestrictTo({RestrictTo.Scope.LIBRARY}) public static void launchBrowserSiteSettings(@NonNull Context context, @NonNull CustomTabsSession customTabsSession, @NonNull Uri uri) { Intent intent = new Intent("android.support.customtabs.action.ACTION_MANAGE_TRUSTED_WEB_ACTIVITY_DATA"); intent.setPackage(customTabsSession.getComponentName().getPackageName()); intent.setData(uri); Bundle bundle = new Bundle(); BundleCompat.putBinder(bundle, "android.support.customtabs.extra.SESSION", customTabsSession.getBinder()); intent.putExtras(bundle); PendingIntent id2 = customTabsSession.getId(); if (id2 != null) { intent.putExtra("android.support.customtabs.extra.SESSION_ID", id2); } context.startActivity(intent); } @WorkerThread public static boolean transferSplashImage(@NonNull Context context, @NonNull File file, @NonNull String str, @NonNull String str2, @NonNull CustomTabsSession customTabsSession) { Uri uriForFile = FileProvider.getUriForFile(context, str, file); context.grantUriPermission(str2, uriForFile, 1); return customTabsSession.receiveFile(uriForFile, 1, null); } }