导航菜单

页面标题

页面副标题

Aptoide v9.22.5.3 - ReferrerUtils.java 源代码

正在查看: Aptoide v9.22.5.3 应用的 ReferrerUtils.java JAVA 源代码文件

本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。


package cm.aptoide.pt.util;

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.net.Uri;
import android.text.TextUtils;
import android.view.WindowManager;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import cm.aptoide.pt.AptoideApplication;
import cm.aptoide.pt.ads.AdsRepository;
import cm.aptoide.pt.ads.MinimalAd;
import cm.aptoide.pt.ads.MinimalAdMapper;
import cm.aptoide.pt.crashreports.CrashReport;
import cm.aptoide.pt.database.RoomStoredMinimalAdPersistence;
import cm.aptoide.pt.dataprovider.ads.AdNetworkUtils;
import cm.aptoide.pt.dataprovider.util.referrer.SimpleTimedFuture;
import cm.aptoide.pt.dataprovider.ws.v2.aptwords.RegisterAdRefererRequest;
import cm.aptoide.pt.logger.Logger;
import cm.aptoide.pt.networking.IdsRepository;
import cm.aptoide.pt.preferences.managed.ManagerPreferences;
import cm.aptoide.pt.search.model.SearchAdResult;
import cm.aptoide.pt.util.ReferrerUtils;
import cm.aptoide.pt.utils.AptoideUtils;
import cm.aptoide.pt.utils.q.QManager;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.Future;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
import okhttp3.OkHttpClient;
import retrofit2.Converter$Factory;
import rx.schedulers.Schedulers;

public class ReferrerUtils extends cm.aptoide.pt.dataprovider.util.referrer.ReferrerUtils {
    private static final String TAG = "ReferrerUtils";

    public static void broadcastReferrer(String str, String str2, Context context) {
        Intent intent = new Intent("com.android.vending.INSTALL_REFERRER");
        intent.setPackage(str);
        intent.setFlags(32);
        intent.putExtra("referrer", str2);
        context.sendBroadcast(intent);
        Logger.getInstance().d(TAG, "Sent broadcast to " + str + " with referrer " + str2);
    }

    public static List<Long> clearExcludedNetworks(String str) {
        return cm.aptoide.pt.dataprovider.util.referrer.ReferrerUtils.excludedNetworks.remove(str);
    }

    public static void extractReferrer(SearchAdResult searchAdResult, int i, boolean z, AdsRepository adsRepository, OkHttpClient okHttpClient, Converter$Factory converter$Factory, QManager qManager, final Context context, SharedPreferences sharedPreferences, MinimalAdMapper minimalAdMapper, RoomStoredMinimalAdPersistence roomStoredMinimalAdPersistence) {
        String packageName = searchAdResult.getPackageName();
        long networkId = searchAdResult.getNetworkId();
        final String clickUrl = searchAdResult.getClickUrl();
        if (clickUrl == null) {
            Logger.getInstance().d("ExtractReferrer", "No click_url for packageName " + packageName);
            return;
        }
        if (!AptoideUtils.ThreadU.isUiThread()) {
            throw new RuntimeException("ExtractReferrer must be run on UI thread!");
        }
        try {
            Logger.getInstance().d("ExtractReferrer", "Called for: " + clickUrl + " with packageName " + packageName);
            final String[] strArr = {clickUrl};
            final SimpleTimedFuture simpleTimedFuture = new SimpleTimedFuture();
            WindowManager windowManager = (WindowManager) context.getSystemService("window");
            WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams(-2, -2, 2006, 16, -3);
            layoutParams.gravity = 51;
            layoutParams.x = 0;
            layoutParams.y = 0;
            layoutParams.width = 0;
            layoutParams.height = 0;
            LinearLayout linearLayout = new LinearLayout(context);
            linearLayout.setLayoutParams(new RelativeLayout.LayoutParams(-1, -1));
            AptoideUtils.ThreadU.runOnIoThread(new Runnable() {
                @Override
                public final void run() {
                    ReferrerUtils.lambda$extractReferrer$0(context, strArr, clickUrl, simpleTimedFuture);
                }
            });
            simpleTimedFuture.get();
            WebView webView = new WebView(context);
            webView.setLayoutParams(new LinearLayout.LayoutParams(-1, -1));
            linearLayout.addView(webView);
            webView.getSettings().setJavaScriptEnabled(true);
            webView.setWebViewClient(new AnonymousClass1(searchAdResult, i, okHttpClient, converter$Factory, qManager, z, packageName, context, roomStoredMinimalAdPersistence, minimalAdMapper, sharedPreferences, networkId, adsRepository));
            webView.loadUrl(strArr[0]);
            windowManager.addView(linearLayout, layoutParams);
        } catch (Exception e2) {
            CrashReport.getInstance().log(e2);
        }
    }

    public static String getReferrer(String str) {
        String queryParameter = Uri.parse(str).getQueryParameter("referrer");
        if (TextUtils.isEmpty(queryParameter)) {
            Logger.getInstance().v(TAG, "Didn't find any referrer: " + str);
        } else {
            Logger.getInstance().v(TAG, "Found referrer: " + queryParameter);
        }
        return queryParameter;
    }

    static void lambda$extractReferrer$0(Context context, String[] strArr, String str, SimpleTimedFuture simpleTimedFuture) {
        IdsRepository idsRepository = ((AptoideApplication) context.getApplicationContext()).getIdsRepository();
        strArr[0] = AdNetworkUtils.parseMacros(str, idsRepository.getAndroidId(), (String) idsRepository.getUniqueIdentifier().y().b(), (String) idsRepository.getAdvertisingId().y().b());
        simpleTimedFuture.set(strArr[0]);
        Logger.getInstance().d("ExtractReferrer", "Parsed clickUrl: " + strArr[0]);
    }

    class AnonymousClass1 extends WebViewClient {
        Future<Void> future;
        final MinimalAdMapper val$adMapper;
        final AdsRepository val$adsRepository;
        final boolean val$broadcastReferrer;
        final Context val$context;
        final Converter$Factory val$converterFactory;
        final OkHttpClient val$httpClient;
        final long val$networkId;
        final String val$packageName;
        final QManager val$qManager;
        final int val$retries;
        final RoomStoredMinimalAdPersistence val$roomStoredMinimalAdPersistence;
        final SearchAdResult val$searchAdResult;
        final SharedPreferences val$sharedPreferences;

        AnonymousClass1(SearchAdResult searchAdResult, int i, OkHttpClient okHttpClient, Converter$Factory converter$Factory, QManager qManager, boolean z, String str, Context context, RoomStoredMinimalAdPersistence roomStoredMinimalAdPersistence, MinimalAdMapper minimalAdMapper, SharedPreferences sharedPreferences, long j, AdsRepository adsRepository) {
            this.val$searchAdResult = searchAdResult;
            this.val$retries = i;
            this.val$httpClient = okHttpClient;
            this.val$converterFactory = converter$Factory;
            this.val$qManager = qManager;
            this.val$broadcastReferrer = z;
            this.val$packageName = str;
            this.val$context = context;
            this.val$roomStoredMinimalAdPersistence = roomStoredMinimalAdPersistence;
            this.val$adMapper = minimalAdMapper;
            this.val$sharedPreferences = sharedPreferences;
            this.val$networkId = j;
            this.val$adsRepository = adsRepository;
        }

        static MinimalAd lambda$postponeReferrerExtraction$1(Throwable th) {
            return null;
        }

        static Void lambda$postponeReferrerExtraction$5(boolean z, final SearchAdResult searchAdResult, final OkHttpClient okHttpClient, final Converter$Factory converter$Factory, final QManager qManager, final SharedPreferences sharedPreferences, final int i, final String str, long j, final AdsRepository adsRepository, final boolean z2, final Context context, final RoomStoredMinimalAdPersistence roomStoredMinimalAdPersistence) throws Exception {
            Logger.getInstance().d("ExtractReferrer", "Sending RegisterAdRefererRequest with value " + z);
            RegisterAdRefererRequest.of(searchAdResult.getAdId(), searchAdResult.getAppId(), searchAdResult.getClickUrl(), z, okHttpClient, converter$Factory, qManager.getFilters(ManagerPreferences.getHWSpecsFilter(sharedPreferences)), sharedPreferences).execute();
            Logger.getInstance().d("ExtractReferrer", "Retries left: " + i);
            if (z) {
                ReferrerUtils.clearExcludedNetworks(str);
                return null;
            }
            cm.aptoide.pt.dataprovider.util.referrer.ReferrerUtils.excludedNetworks.add(str, j);
            try {
                if (i > 0) {
                    adsRepository.getAdsFromSecondTry(str).j0(rx.l.c.a.b()).p0(new rx.m.e() {
                        @Override
                        public final Object call(Object obj) {
                            ReferrerUtils.AnonymousClass1.lambda$postponeReferrerExtraction$1((Throwable) obj);
                            return null;
                        }
                    }).D(new rx.m.e() {
                        @Override
                        public final Object call(Object obj) {
                            Boolean valueOf;
                            SearchAdResult searchAdResult2 = SearchAdResult.this;
                            valueOf = Boolean.valueOf(r0 != null);
                            return valueOf;
                        }
                    }).H0(new rx.m.b() {
                        @Override
                        public final void call(Object obj) {
                            ReferrerUtils.extractReferrer(new SearchAdResult((MinimalAd) obj), i - 1, z2, adsRepository, okHttpClient, converter$Factory, qManager, context, sharedPreferences, new MinimalAdMapper(), roomStoredMinimalAdPersistence);
                        }
                    }, new rx.m.b() {
                        @Override
                        public final void call(Object obj) {
                            ReferrerUtils.clearExcludedNetworks(str);
                        }
                    });
                } else {
                    ReferrerUtils.clearExcludedNetworks(str);
                }
                return null;
            } catch (Exception e2) {
                e2.printStackTrace();
                return null;
            }
        }

        private ScheduledFuture<Void> postponeReferrerExtraction(SearchAdResult searchAdResult, int i, int i2, OkHttpClient okHttpClient, Converter$Factory converter$Factory, QManager qManager) {
            return postponeReferrerExtraction(searchAdResult, i, false, i2, okHttpClient, converter$Factory, qManager.getFilters(ManagerPreferences.getHWSpecsFilter(this.val$sharedPreferences)), qManager);
        }

        @Override
        public void onPageStarted(WebView webView, String str, Bitmap bitmap) {
            super.onPageStarted(webView, str, bitmap);
            Logger.getInstance().d("ExtractReferrer", "Openened clickUrl: " + str);
            if (this.future == null) {
                this.future = postponeReferrerExtraction(this.val$searchAdResult, 5, this.val$retries, this.val$httpClient, this.val$converterFactory, this.val$qManager);
            }
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView webView, String str) {
            if (this.future == null) {
                Logger.getInstance().d("ExtractReferrer", "onPageStarted potentially not called : " + str);
                this.future = postponeReferrerExtraction(this.val$searchAdResult, 5, this.val$retries, this.val$httpClient, this.val$converterFactory, this.val$qManager);
            }
            Logger.getInstance().d("ExtractReferrer", "ClickUrl redirect: " + str);
            if (str.startsWith("market://") || str.startsWith("https://play.google.com") || str.startsWith("http://play.google.com")) {
                Logger.getInstance().d("ExtractReferrer", "Clickurl landed on market");
                final String referrer = ReferrerUtils.getReferrer(str);
                if (!TextUtils.isEmpty(referrer)) {
                    Logger.getInstance().d("ExtractReferrer", "Referrer successfully extracted");
                    if (this.val$broadcastReferrer) {
                        ReferrerUtils.broadcastReferrer(this.val$packageName, referrer, this.val$context);
                    } else {
                        final RoomStoredMinimalAdPersistence roomStoredMinimalAdPersistence = this.val$roomStoredMinimalAdPersistence;
                        final MinimalAdMapper minimalAdMapper = this.val$adMapper;
                        final SearchAdResult searchAdResult = this.val$searchAdResult;
                        rx.b.t(new rx.m.a() {
                            @Override
                            public final void call() {
                                RoomStoredMinimalAdPersistence.this.insert(minimalAdMapper.map(searchAdResult, referrer));
                            }
                        }).K(Schedulers.io()).H();
                    }
                    Future<Void> future = this.future;
                    if (future != null) {
                        future.cancel(false);
                    }
                    postponeReferrerExtraction(this.val$searchAdResult, 0, true, this.val$httpClient, this.val$converterFactory, this.val$qManager);
                }
            }
            return false;
        }

        private ScheduledFuture<Void> postponeReferrerExtraction(SearchAdResult searchAdResult, int i, boolean z, OkHttpClient okHttpClient, Converter$Factory converter$Factory, QManager qManager) {
            return postponeReferrerExtraction(searchAdResult, i, z, 0, okHttpClient, converter$Factory, qManager.getFilters(ManagerPreferences.getHWSpecsFilter(this.val$sharedPreferences)), qManager);
        }

        private ScheduledFuture<Void> postponeReferrerExtraction(final SearchAdResult searchAdResult, int i, final boolean z, final int i2, final OkHttpClient okHttpClient, final Converter$Factory converter$Factory, String str, final QManager qManager) {
            Logger.getInstance().d("ExtractReferrer", "Referrer postponed " + i + " seconds.");
            final SharedPreferences sharedPreferences = this.val$sharedPreferences;
            final String str2 = this.val$packageName;
            final long j = this.val$networkId;
            final AdsRepository adsRepository = this.val$adsRepository;
            final boolean z2 = this.val$broadcastReferrer;
            final Context context = this.val$context;
            final RoomStoredMinimalAdPersistence roomStoredMinimalAdPersistence = this.val$roomStoredMinimalAdPersistence;
            return cm.aptoide.pt.dataprovider.util.referrer.ReferrerUtils.executorService.schedule(new Callable() {
                @Override
                public final Object call() {
                    ReferrerUtils.AnonymousClass1.lambda$postponeReferrerExtraction$5(z, searchAdResult, okHttpClient, converter$Factory, qManager, sharedPreferences, i2, str2, j, adsRepository, z2, context, roomStoredMinimalAdPersistence);
                    return null;
                }
            }, i, TimeUnit.SECONDS);
        }
    }
}