aboutsummaryrefslogtreecommitdiffstats
path: root/src/playstore/java/de/pixart/messenger/utils/InstallReferrerUtils.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/playstore/java/de/pixart/messenger/utils/InstallReferrerUtils.java')
-rw-r--r--src/playstore/java/de/pixart/messenger/utils/InstallReferrerUtils.java62
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