diff options
Diffstat (limited to 'src/playstore/java/de/pixart/messenger/utils/InstallReferrerUtils.java')
-rw-r--r-- | src/playstore/java/de/pixart/messenger/utils/InstallReferrerUtils.java | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/src/playstore/java/de/pixart/messenger/utils/InstallReferrerUtils.java b/src/playstore/java/de/pixart/messenger/utils/InstallReferrerUtils.java new file mode 100644 index 000000000..05824b9b2 --- /dev/null +++ b/src/playstore/java/de/pixart/messenger/utils/InstallReferrerUtils.java @@ -0,0 +1,62 @@ +package de.pixart.messenger.utils; + +import android.app.Activity; +import android.content.SharedPreferences; +import android.os.RemoteException; +import android.preference.PreferenceManager; +import android.util.Log; + +import com.android.installreferrer.api.InstallReferrerClient; +import com.android.installreferrer.api.InstallReferrerStateListener; +import com.android.installreferrer.api.ReferrerDetails; + +import de.pixart.messenger.Config; +import de.pixart.messenger.ui.WelcomeActivity; + +public class InstallReferrerUtils implements InstallReferrerStateListener { + + private static final String PROCESSED_INSTALL_REFERRER = "processed_install_referrer"; + + + private final WelcomeActivity welcomeActivity; + private final InstallReferrerClient installReferrerClient; + + + public InstallReferrerUtils(WelcomeActivity welcomeActivity) { + this.welcomeActivity = welcomeActivity; + final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(welcomeActivity); + if (preferences.getBoolean(PROCESSED_INSTALL_REFERRER, false)) { + Log.d(Config.LOGTAG, "install referrer already processed"); + this.installReferrerClient = null; + return; + } + this.installReferrerClient = InstallReferrerClient.newBuilder(welcomeActivity).build(); + this.installReferrerClient.startConnection(this); + } + + public static void markInstallReferrerExecuted(final Activity context) { + final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); + preferences.edit().putBoolean(PROCESSED_INSTALL_REFERRER, true).apply(); + } + + @Override + public void onInstallReferrerSetupFinished(int responseCode) { + switch (responseCode) { + case InstallReferrerClient.InstallReferrerResponse.OK: + try { + final ReferrerDetails referrerDetails = installReferrerClient.getInstallReferrer(); + final String referrer = referrerDetails.getInstallReferrer(); + welcomeActivity.onInstallReferrerDiscovered(referrer); + } catch (RemoteException e) { + Log.d(Config.LOGTAG, "unable to get install referrer", e); + } + break; + default: + Log.d(Config.LOGTAG, "unable to setup install referrer client. code=" + responseCode); + } + } + + @Override + public void onInstallReferrerServiceDisconnected() { + } +}
\ No newline at end of file |