70 lines
2.7 KiB
Java
70 lines
2.7 KiB
Java
package eu.siacs.conversations.utils;
|
|
|
|
import android.app.Activity;
|
|
import android.content.SharedPreferences;
|
|
import android.net.Uri;
|
|
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 com.google.common.base.Strings;
|
|
|
|
import eu.siacs.conversations.Config;
|
|
import eu.siacs.conversations.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();
|
|
try {
|
|
this.installReferrerClient.startConnection(this);
|
|
} catch (SecurityException e) {
|
|
Log.e(Config.LOGTAG, "unable to start connection to InstallReferrerClient", e);
|
|
}
|
|
}
|
|
|
|
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) {
|
|
if (responseCode == InstallReferrerClient.InstallReferrerResponse.OK) {
|
|
try {
|
|
final ReferrerDetails referrerDetails = installReferrerClient.getInstallReferrer();
|
|
final String referrer = referrerDetails.getInstallReferrer();
|
|
if (Strings.isNullOrEmpty(referrer)) {
|
|
return;
|
|
}
|
|
welcomeActivity.onInstallReferrerDiscovered(Uri.parse(referrer));
|
|
} catch (final RemoteException | IllegalArgumentException e) {
|
|
Log.d(Config.LOGTAG, "unable to get install referrer", e);
|
|
}
|
|
} else {
|
|
Log.d(Config.LOGTAG, "unable to setup install referrer client. code=" + responseCode);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void onInstallReferrerServiceDisconnected() {
|
|
|
|
}
|
|
} |