package starter.kit.util;
import android.content.Context;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.telephony.TelephonyManager;
import java.util.UUID;
import support.ui.app.SupportApp;
import static android.os.Build.BOARD;
import static android.os.Build.BRAND;
import static android.os.Build.DEVICE;
import static android.os.Build.DISPLAY;
import static android.os.Build.HOST;
import static android.os.Build.ID;
import static android.os.Build.MANUFACTURER;
import static android.os.Build.MODEL;
import static android.os.Build.PRODUCT;
import static android.os.Build.TAGS;
import static android.os.Build.TYPE;
import static android.os.Build.USER;
import static android.provider.Settings.Secure.ANDROID_ID;
import static android.provider.Settings.Secure.getString;
public class Installation {
public static String genInstallationId() {
StringBuilder sb =
new StringBuilder(getPackageName()).append(getAndroidId()).append(getPseudoUniqueID());
final String imei = getIMEI();
final String macAddress = getMacAddress();
sb.append(macAddress);
sb.append(imei);
if (Strings.isBlank(macAddress) && Strings.isBlank(imei)) {
sb.append(UUID.randomUUID().toString());
}
return Md5Util.md5(sb.toString());
}
private static String getPackageName() {
return SupportApp.appContext().getPackageName();
}
private static String getPseudoUniqueID() {
return "35" + BOARD.length() % 10 +
BRAND.length() % 10 +
DEVICE.length() % 10 +
DISPLAY.length() % 10 +
HOST.length() % 10 +
ID.length() % 10 +
MANUFACTURER.length() % 10 +
MODEL.length() % 10 +
PRODUCT.length() % 10 +
TAGS.length() % 10 +
TYPE.length() % 10 +
USER.length() % 10;
}
private static String getAndroidId() {
return getString(SupportApp.appContext().getContentResolver(), ANDROID_ID);
}
private static String getIMEI() {
try {
TelephonyManager telephonyManager =
(TelephonyManager) SupportApp.appContext().getSystemService(Context.TELEPHONY_SERVICE);
return telephonyManager.getDeviceId();
} catch (Exception exception) {
// Nothing to do
}
return null;
}
private static String getMacAddress() {
try {
WifiManager e = (WifiManager) SupportApp.appContext().getSystemService(Context.WIFI_SERVICE);
WifiInfo wInfo = e.getConnectionInfo();
return wInfo.getMacAddress();
} catch (Exception exception) {
// Nothing to do
}
return null;
}
}