MD5 校验值:fb72bc490ecd1e731c5b177638b1dd73
Intents.java 文件包含反编译后的源代码,请注意,该内容仅供学习和参考使用,不得用于非法用途。
package com.mopub.common.util; import android.app.Activity; import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.text.TextUtils; import com.google.android.exoplayer2.C; import com.google.android.gms.common.internal.ImagesContract; import com.mopub.common.Constants; import com.mopub.common.MoPub; import com.mopub.common.MoPubBrowser; import com.mopub.common.Preconditions; import com.mopub.common.UrlAction; import com.mopub.common.logging.MoPubLog; import com.mopub.exceptions.IntentNotResolvableException; import com.mopub.exceptions.UrlParseException; import java.util.Collections; import java.util.HashMap; import java.util.Map; public class Intents { private static final Map<String, String> a; static { HashMap hashMap = new HashMap(); hashMap.put("market", "https://play.google.com/store/apps/details?%s"); hashMap.put("amzn", "http://www.amazon.com/gp/mas/dl/android?%s"); a = Collections.unmodifiableMap(hashMap); } private Intents() { } private static Uri a(Uri uri) { Preconditions.checkNotNull(uri); if (!"navigate".equals(uri.getHost())) { throw new UrlParseException("URL missing 'navigate' host parameter."); } try { String queryParameter = uri.getQueryParameter(ImagesContract.URL); if (queryParameter != null) { return Uri.parse(queryParameter); } throw new UrlParseException("URL missing 'url' query parameter."); } catch (UnsupportedOperationException unused) { MoPubLog.log(MoPubLog.SdkLogEvent.CUSTOM, "Could not handle url: " + uri); throw new UrlParseException("Passed-in URL did not create a hierarchical URI."); } } @Deprecated public static boolean canHandleApplicationUrl(Context context, Uri uri) { return false; } @Deprecated public static boolean canHandleApplicationUrl(Context context, Uri uri, boolean z) { return false; } public static boolean deviceCanHandleIntent(Context context, Intent intent) { try { return !context.getPackageManager().queryIntentActivities(intent, 0).isEmpty(); } catch (NullPointerException unused) { return false; } } public static Uri getPlayStoreUri(Intent intent) { Preconditions.checkNotNull(intent); return Uri.parse("market://details?id=" + intent.getPackage()); } public static Intent getStartActivityIntent(Context context, Class cls, Bundle bundle) { Intent intent = new Intent(context, (Class<?>) cls); if (!(context instanceof Activity)) { intent.addFlags(C.ENCODING_PCM_MU_LAW); } if (bundle != null) { intent.putExtras(bundle); } return intent; } public static Intent intentForNativeBrowserScheme(Uri uri) { Preconditions.checkNotNull(uri); if (UrlAction.OPEN_NATIVE_BROWSER.shouldTryHandlingUrl(uri)) { if ("mopubnativebrowser".equalsIgnoreCase(uri.getScheme())) { return new Intent("android.intent.action.VIEW", a(uri)); } if (MoPub.getBrowserAgent() == MoPub.BrowserAgent.NATIVE) { return new Intent("android.intent.action.VIEW", uri); } throw new UrlParseException("Invalid URI: " + uri.toString()); } String str = "mopubnativebrowser://"; if (MoPub.getBrowserAgent() == MoPub.BrowserAgent.NATIVE) { str = "mopubnativebrowser://, http://, or https://"; } throw new UrlParseException("URI does not have " + str + " scheme."); } public static Intent intentForShareTweet(Uri uri) { if (!UrlAction.HANDLE_SHARE_TWEET.shouldTryHandlingUrl(uri)) { throw new UrlParseException("URL does not have mopubshare://tweet? format."); } try { String queryParameter = uri.getQueryParameter("screen_name"); String queryParameter2 = uri.getQueryParameter("tweet_id"); if (TextUtils.isEmpty(queryParameter)) { throw new UrlParseException("URL missing non-empty 'screen_name' query parameter."); } if (TextUtils.isEmpty(queryParameter2)) { throw new UrlParseException("URL missing non-empty 'tweet_id' query parameter."); } String format = String.format("Check out @%s's Tweet: %s", queryParameter, String.format("https://twitter.com/%s/status/%s", queryParameter, queryParameter2)); Intent intent = new Intent("android.intent.action.SEND"); intent.setType("text/plain"); intent.putExtra("android.intent.extra.SUBJECT", format); intent.putExtra("android.intent.extra.TEXT", format); return intent; } catch (UnsupportedOperationException unused) { MoPubLog.log(MoPubLog.SdkLogEvent.CUSTOM, "Could not handle url: " + uri); throw new UrlParseException("Passed-in URL did not create a hierarchical URI."); } } public static void launchActionViewIntent(Context context, Uri uri, String str) { Preconditions.checkNotNull(context); Preconditions.checkNotNull(uri); Intent intent = new Intent("android.intent.action.VIEW", uri); if (!(context instanceof Activity)) { intent.addFlags(C.ENCODING_PCM_MU_LAW); } launchIntentForUserClick(context, intent, str); } public static void launchApplicationIntent(Context context, Intent intent) { Uri parse; Preconditions.checkNotNull(context); Preconditions.checkNotNull(intent); if (deviceCanHandleIntent(context, intent)) { String str = "Unable to open intent: " + intent; if (!(context instanceof Activity)) { intent.addFlags(C.ENCODING_PCM_MU_LAW); } launchIntentForUserClick(context, intent, str); return; } String stringExtra = intent.getStringExtra("browser_fallback_url"); if (!TextUtils.isEmpty(stringExtra)) { parse = Uri.parse(stringExtra); String scheme = parse.getScheme(); if (Constants.HTTP.equalsIgnoreCase(scheme) || Constants.HTTPS.equalsIgnoreCase(scheme)) { showMoPubBrowserForUrl(context, parse, null); return; } } else { if (a.containsKey(intent.getScheme())) { throw new IntentNotResolvableException("Device could not handle neither intent nor market url.\nIntent: " + intent.toString()); } parse = getPlayStoreUri(intent); } launchApplicationUrl(context, parse); } public static void launchApplicationUrl(Context context, Uri uri) { Intent intent = new Intent("android.intent.action.VIEW", uri); Preconditions.checkNotNull(context); Preconditions.checkNotNull(uri); if (!deviceCanHandleIntent(context, intent)) { if (!a.containsKey(intent.getScheme()) || intent.getData() == null || TextUtils.isEmpty(intent.getData().getQuery())) { throw new IntentNotResolvableException("Could not handle application specific action: " + uri + "\n\tYou may be running in the emulator or another device which does not have the required application."); } intent = new Intent("android.intent.action.VIEW", Uri.parse(String.format(a.get(intent.getScheme()), intent.getData().getQuery()))); } launchApplicationIntent(context, intent); } public static void launchIntentForUserClick(Context context, Intent intent, String str) { Preconditions.NoThrow.checkNotNull(context); Preconditions.NoThrow.checkNotNull(intent); try { startActivity(context, intent); } catch (IntentNotResolvableException e) { throw new IntentNotResolvableException(str + com.mobfox.sdk.utils.Utils.NEW_LINE + e.getMessage()); } } public static void showMoPubBrowserForUrl(Context context, Uri uri, String str) { Preconditions.checkNotNull(context); Preconditions.checkNotNull(uri); MoPubLog.log(MoPubLog.SdkLogEvent.CUSTOM, "Final URI to show in browser: " + uri); Bundle bundle = new Bundle(); bundle.putString(MoPubBrowser.DESTINATION_URL_KEY, uri.toString()); if (!TextUtils.isEmpty(str)) { bundle.putString(MoPubBrowser.DSP_CREATIVE_ID, str); } launchIntentForUserClick(context, getStartActivityIntent(context, MoPubBrowser.class, bundle), "Could not show MoPubBrowser for url: " + uri + "\n\tPerhaps you forgot to declare com.mopub.common.MoPubBrowser in your Android manifest file."); } public static void startActivity(Context context, Intent intent) { Preconditions.checkNotNull(context); Preconditions.checkNotNull(intent); if (!(context instanceof Activity)) { intent.addFlags(C.ENCODING_PCM_MU_LAW); } try { context.startActivity(intent); } catch (ActivityNotFoundException e) { throw new IntentNotResolvableException(e); } } }