InstallReferrerUtils.java

 1package eu.siacs.conversations.utils;
 2
 3import android.app.Activity;
 4import android.content.SharedPreferences;
 5import android.os.RemoteException;
 6import android.preference.PreferenceManager;
 7import android.util.Log;
 8
 9import com.android.installreferrer.api.InstallReferrerClient;
10import com.android.installreferrer.api.InstallReferrerStateListener;
11import com.android.installreferrer.api.ReferrerDetails;
12
13import eu.siacs.conversations.Config;
14import eu.siacs.conversations.ui.WelcomeActivity;
15
16public class InstallReferrerUtils implements InstallReferrerStateListener {
17
18    private static final String PROCESSED_INSTALL_REFERRER = "processed_install_referrer";
19
20
21    private final WelcomeActivity welcomeActivity;
22    private final InstallReferrerClient installReferrerClient;
23
24
25    public InstallReferrerUtils(WelcomeActivity welcomeActivity) {
26        this.welcomeActivity = welcomeActivity;
27        final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(welcomeActivity);
28        if (preferences.getBoolean(PROCESSED_INSTALL_REFERRER, false)) {
29            Log.d(Config.LOGTAG, "install referrer already processed");
30            this.installReferrerClient = null;
31            return;
32        }
33        this.installReferrerClient = InstallReferrerClient.newBuilder(welcomeActivity).build();
34        this.installReferrerClient.startConnection(this);
35    }
36
37    public static void markInstallReferrerExecuted(final Activity context) {
38        final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
39        preferences.edit().putBoolean(PROCESSED_INSTALL_REFERRER, true).apply();
40    }
41
42    @Override
43    public void onInstallReferrerSetupFinished(int responseCode) {
44        switch (responseCode) {
45            case InstallReferrerClient.InstallReferrerResponse.OK:
46                try {
47                    final ReferrerDetails referrerDetails = installReferrerClient.getInstallReferrer();
48                    final String referrer = referrerDetails.getInstallReferrer();
49                    welcomeActivity.onInstallReferrerDiscovered(referrer);
50                } catch (RemoteException e) {
51                    Log.d(Config.LOGTAG, "unable to get install referrer", e);
52                }
53                break;
54            default:
55                Log.d(Config.LOGTAG, "unable to setup install referrer client. code=" + responseCode);
56        }
57    }
58
59    @Override
60    public void onInstallReferrerServiceDisconnected() {
61
62    }
63}