com.adjust.sdk.plugin.MacAddressUtil Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of adjust-android-trademob Show documentation
Show all versions of adjust-android-trademob Show documentation
The Trademob plugin for Adjust SDK for Android
package com.adjust.sdk.plugin;
import android.content.Context;
import android.net.wifi.WifiManager;
import android.text.TextUtils;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Locale;
public class MacAddressUtil {
public static String getMacAddress(Context context) {
final String rawAddress = getRawMacAddress(context);
if (rawAddress == null) {
return null;
}
final String upperAddress = rawAddress.toUpperCase(Locale.US);
return removeSpaceString(upperAddress);
}
private static String getRawMacAddress(Context context) {
// android devices should have a wlan address
final String wlanAddress = loadAddress("wlan0");
if (wlanAddress != null) {
return wlanAddress;
}
// emulators should have an ethernet address
final String ethAddress = loadAddress("eth0");
if (ethAddress != null) {
return ethAddress;
}
// query the wifi manager (requires the ACCESS_WIFI_STATE permission)
try {
final WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
final String wifiAddress = wifiManager.getConnectionInfo().getMacAddress();
if (wifiAddress != null) {
return wifiAddress;
}
} catch (Exception e) {
/* no-op */
}
return null;
}
private static String loadAddress(final String interfaceName) {
try {
final String filePath = "/sys/class/net/" + interfaceName + "/address";
final StringBuilder fileData = new StringBuilder(1000);
final BufferedReader reader = new BufferedReader(new FileReader(filePath), 1024);
final char[] buf = new char[1024];
int numRead;
String readData;
while ((numRead = reader.read(buf)) != -1) {
readData = String.valueOf(buf, 0, numRead);
fileData.append(readData);
}
reader.close();
return fileData.toString();
} catch (IOException e) {
return null;
}
}
private static String removeSpaceString(final String inputString) {
if (inputString == null) {
return null;
}
String outputString = inputString.replaceAll("\\s", "");
if (TextUtils.isEmpty(outputString)) {
return null;
}
return outputString;
}
}