package com.adjust.sdk; import android.content.Context; import com.adjust.sdk.scheduler.TimerOnce; import java.lang.reflect.InvocationHandler; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import java.util.concurrent.atomic.AtomicBoolean; public class InstallReferrer implements InvocationHandler { private static final String PACKAGE_BASE_NAME = "com.android.installreferrer."; private static final int STATUS_DEVELOPER_ERROR = 3; private static final int STATUS_FEATURE_NOT_SUPPORTED = 2; private static final int STATUS_OK = 0; private static final int STATUS_SERVICE_DISCONNECTED = -1; private static final int STATUS_SERVICE_UNAVAILABLE = 1; private Context context; private ILogger logger; private Object playInstallReferrer; private final InstallReferrerReadListener referrerCallback; private Object referrerClient; private int retries; private TimerOnce retryTimer; private int retryWaitTime = 3000; private final AtomicBoolean shouldTryToRead; /* renamed from: com.adjust.sdk.InstallReferrer$1 reason: invalid class name */ public class AnonymousClass1 implements Runnable { public AnonymousClass1() { } @Override // java.lang.Runnable public void run() { InstallReferrer.this.startConnection(); } } public InstallReferrer(Context context, InstallReferrerReadListener installReferrerReadListener) { ILogger logger = AdjustFactory.getLogger(); this.logger = logger; this.playInstallReferrer = createInstallReferrer(context, installReferrerReadListener, logger); this.context = context; this.shouldTryToRead = new AtomicBoolean(true); this.retries = 0; this.retryTimer = new TimerOnce(new AnonymousClass1(), "InstallReferrer"); this.referrerCallback = installReferrerReadListener; } private void closeReferrerClient() { Object obj = this.referrerClient; if (obj != null) { try { Reflection.invokeInstanceMethod(obj, "endConnection", null, new Object[0]); this.logger.debug("Install Referrer API connection closed", new Object[0]); } catch (Exception e) { this.logger.error("closeReferrerClient error (%s) thrown by (%s)", e.getMessage(), e.getClass().getCanonicalName()); } this.referrerClient = null; } } private Object createInstallReferrer(Context context, InstallReferrerReadListener installReferrerReadListener, ILogger iLogger) { return Reflection.createInstance("com.adjust.sdk.play.InstallReferrer", new Class[]{Context.class, InstallReferrerReadListener.class, ILogger.class}, context, installReferrerReadListener, iLogger); } private Object createInstallReferrerClient(Context context) { try { return Reflection.invokeInstanceMethod(Reflection.invokeStaticMethod("com.android.installreferrer.api.InstallReferrerClient", "newBuilder", new Class[]{Context.class}, context), "build", null, new Object[0]); } catch (ClassNotFoundException e) { this.logger.warn("InstallReferrer not integrated in project (%s) thrown by (%s)", e.getMessage(), e.getClass().getCanonicalName()); return null; } catch (Exception e2) { this.logger.error("createInstallReferrerClient error (%s) from (%s)", e2.getMessage(), e2.getClass().getCanonicalName()); return null; } } private Object createProxyInstallReferrerStateListener(Class cls) { try { return Proxy.newProxyInstance(cls.getClassLoader(), new Class[]{cls}, this); } catch (IllegalArgumentException unused) { this.logger.error("InstallReferrer proxy violating parameter restrictions", new Object[0]); } catch (NullPointerException unused2) { this.logger.error("Null argument passed to InstallReferrer proxy", new Object[0]); } return null; } private long getInstallBeginTimestampSeconds(Object obj) { if (obj == null) { return -1; } try { return ((Long) Reflection.invokeInstanceMethod(obj, "getInstallBeginTimestampSeconds", null, new Object[0])).longValue(); } catch (Exception e) { this.logger.error("getInstallBeginTimestampSeconds error (%s) thrown by (%s)", e.getMessage(), e.getClass().getCanonicalName()); return -1; } } private Object getInstallReferrer() { Object obj = this.referrerClient; if (obj == null) { return null; } try { return Reflection.invokeInstanceMethod(obj, "getInstallReferrer", null, new Object[0]); } catch (Exception e) { this.logger.error("getInstallReferrer error (%s) thrown by (%s)", e.getMessage(), e.getClass().getCanonicalName()); return null; } } private Class getInstallReferrerStateListenerClass() { try { return Class.forName("com.android.installreferrer.api.InstallReferrerStateListener"); } catch (Exception e) { this.logger.error("getInstallReferrerStateListenerClass error (%s) from (%s)", e.getMessage(), e.getClass().getCanonicalName()); return null; } } private long getReferrerClickTimestampSeconds(Object obj) { if (obj == null) { return -1; } try { return ((Long) Reflection.invokeInstanceMethod(obj, "getReferrerClickTimestampSeconds", null, new Object[0])).longValue(); } catch (Exception e) { this.logger.error("getReferrerClickTimestampSeconds error (%s) thrown by (%s)", e.getMessage(), e.getClass().getCanonicalName()); return -1; } } private String getStringInstallReferrer(Object obj) { if (obj == null) { return null; } try { return (String) Reflection.invokeInstanceMethod(obj, "getInstallReferrer", null, new Object[0]); } catch (Exception e) { this.logger.error("getStringInstallReferrer error (%s) thrown by (%s)", e.getMessage(), e.getClass().getCanonicalName()); return null; } } private void onInstallReferrerSetupFinishedInt(int i) { boolean z2 = true; if (i != -1) { if (i == 0) { try { Object installReferrer = getInstallReferrer(); String stringInstallReferrer = getStringInstallReferrer(installReferrer); long referrerClickTimestampSeconds = getReferrerClickTimestampSeconds(installReferrer); long installBeginTimestampSeconds = getInstallBeginTimestampSeconds(installReferrer); this.logger.debug("installReferrer: %s, clickTime: %d, installBeginTime: %d", stringInstallReferrer, Long.valueOf(referrerClickTimestampSeconds), Long.valueOf(installBeginTimestampSeconds)); this.logger.debug("Install Referrer read successfully. Closing connection", new Object[0]); this.referrerCallback.onInstallReferrerRead(stringInstallReferrer, referrerClickTimestampSeconds, installBeginTimestampSeconds); } catch (Exception e) { this.logger.warn("Couldn't get install referrer from client (%s). Retrying...", e.getMessage()); } } else if (i == 1) { this.logger.debug("Could not initiate connection to the Install Referrer service. Retrying...", new Object[0]); } else if (i == 2) { this.logger.debug("Install Referrer API not supported by the installed Play Store app. Closing connection", new Object[0]); } else if (i != 3) { this.logger.debug("Unexpected response code of install referrer response: %d. Closing connection", Integer.valueOf(i)); } else { this.logger.debug("Install Referrer API general errors caused by incorrect usage. Retrying...", new Object[0]); } z2 = false; } else { this.logger.debug("Play Store service is not connected now. Retrying...", new Object[0]); } if (z2) { retry(); return; } this.shouldTryToRead.set(false); closeReferrerClient(); } private void retry() { if (!this.shouldTryToRead.get()) { this.logger.debug("Should not try to read Install referrer", new Object[0]); closeReferrerClient(); } else if (this.retries + 1 > 2) { this.logger.debug("Limit number of retry of %d for install referrer surpassed", 2); } else { long fireIn = this.retryTimer.getFireIn(); if (fireIn > 0) { this.logger.debug("Already waiting to retry to read install referrer in %d milliseconds", Long.valueOf(fireIn)); return; } int i = this.retries + 1; this.retries = i; this.logger.debug("Retry number %d to connect to install referrer API", Integer.valueOf(i)); this.retryTimer.startIn((long) this.retryWaitTime); } } private void startConnection(Class cls, Object obj) { try { Reflection.invokeInstanceMethod(this.referrerClient, "startConnection", new Class[]{cls}, obj); } catch (InvocationTargetException e) { if (Util.hasRootCause(e)) { this.logger.error("InstallReferrer encountered an InvocationTargetException %s", Util.getRootCause(e)); } } catch (Exception e2) { this.logger.error("startConnection error (%s) thrown by (%s)", e2.getMessage(), e2.getClass().getCanonicalName()); } } @Override // java.lang.reflect.InvocationHandler public Object invoke(Object obj, Method method, Object[] objArr) throws Throwable { if (method == null) { this.logger.error("InstallReferrer invoke method null", new Object[0]); return null; } String name = method.getName(); if (name == null) { this.logger.error("InstallReferrer invoke method name null", new Object[0]); return null; } this.logger.debug("InstallReferrer invoke method name: %s", name); if (objArr == null) { this.logger.warn("InstallReferrer invoke args null", new Object[0]); objArr = new Object[0]; } for (Object obj2 : objArr) { this.logger.debug("InstallReferrer invoke arg: %s", obj2); } if (name.equals("onInstallReferrerSetupFinished")) { if (objArr.length != 1) { this.logger.error("InstallReferrer invoke onInstallReferrerSetupFinished args lenght not 1: %d", Integer.valueOf(objArr.length)); return null; } Object obj3 = objArr[0]; if (!(obj3 instanceof Integer)) { this.logger.error("InstallReferrer invoke onInstallReferrerSetupFinished arg not int", new Object[0]); return null; } Integer num = (Integer) obj3; if (num == null) { this.logger.error("InstallReferrer invoke onInstallReferrerSetupFinished responseCode arg is null", new Object[0]); return null; } onInstallReferrerSetupFinishedInt(num.intValue()); } else if (name.equals("onInstallReferrerServiceDisconnected")) { this.logger.debug("Connection to install referrer service was lost. Retrying ...", new Object[0]); retry(); } return null; } public void startConnection() { Class installReferrerStateListenerClass; Object createProxyInstallReferrerStateListener; Object obj = this.playInstallReferrer; if (obj != null) { try { Reflection.invokeInstanceMethod(obj, "startConnection", null, new Object[0]); return; } catch (Exception e) { this.logger.error("Call to Play startConnection error: %s", e.getMessage()); } } if (AdjustFactory.getTryInstallReferrer()) { closeReferrerClient(); if (!this.shouldTryToRead.get()) { this.logger.debug("Should not try to read Install referrer", new Object[0]); return; } Context context = this.context; if (context != null) { Object createInstallReferrerClient = createInstallReferrerClient(context); this.referrerClient = createInstallReferrerClient; if (createInstallReferrerClient != null && (installReferrerStateListenerClass = getInstallReferrerStateListenerClass()) != null && (createProxyInstallReferrerStateListener = createProxyInstallReferrerStateListener(installReferrerStateListenerClass)) != null) { startConnection(installReferrerStateListenerClass, createProxyInstallReferrerStateListener); } } } } }