正在查看: Aptoide v9.22.5.3 应用的 ReferrerUtils.java JAVA 源代码文件
本页面展示 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);
}
}
}