您的位置:首页 > 产品设计 > UI/UE

获取设备id imei uuid mac地址 以及根据不同的id 生成uuid

2018-02-09 11:18 656 查看
package com.mny.macimeideviceinfo;

import android.content.Context;
import android.provider.Settings;
import android.telephony.TelephonyManager;

import java.net.NetworkInterface;
import java.net.SocketException;

/**
* Created by MnyZhao on 2018/2/9.
*/

public class DeviceInfoUtils {
public static DeviceInfoUtils deviceInfoUtils;

public static DeviceInfoUtils getDeviceInfoUtils(Context context) {
if (deviceInfoUtils == null) {
deviceInfoUtils = new DeviceInfoUtils();
}
return deviceInfoUtils;
}

/*Deviceid*/
public String getDeivceId(Context context) {
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
final String deviceId = telephonyManager.getDeviceId();
final String androidId = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
String uuid = "";
if (deviceId != null) {
uuid = deviceId;
} else {
if (!"9774d56d682e549c".equals(androidId)) {
uuid = androidId;
} else {
//                uuid = UUID.randomUUID().toString();
uuid = getUUID(context);
}
}
return uuid;
}
/*Imei*/
public String getImei(Context context) {
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
return telephonyManager.getDeviceId();
}
/*imsi*/
public  String getImsi(Context context){
TelephonyManager telephonyManager= (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
return telephonyManager.getSubscriberId();
}
/*wifi MAC*/
public String getMacAddress() {
String macAddress = null;
StringBuffer buf = new StringBuffer();
NetworkInterface networkInterface = null;
try {
networkInterface = NetworkInterface.getByName("eth1");
if (networkInterface == null) {
networkInterface = NetworkInterface.getByName("wlan0");
}
if (networkInterface == null) {
return "02:00:00:00:00:02";
}
byte[] addr = networkInterface.getHardwareAddress();
for (byte b : addr) {
buf.append(String.format("%02X:", b));
}
if (buf.length() > 0) {
buf.deleteCharAt(buf.length() - 1);
}
macAddress = buf.toString();
} catch (SocketException e) {
e.printStackTrace();
return "02:00:00:00:00:02";
}
return macAddress;
}

/*getAndroidId*/
public String getAndroidID(Context context) {
return Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);

}

/*getuuid*/
public String getUUID(Context context) {
DeviceUuidFactory deviceUuidFacto = new DeviceUuidFactory(context);
return deviceUuidFacto.getDeviceUuid().toString();
}
}
<uses-permission android:name="android.permission.READ_PHONE_STATE"/><uses-permission android:name="android.permission.INTERNET"/><uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/><uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
package com.mny.macimeideviceinfo;import android.content.Context;import android.content.SharedPreferences;import android.provider.Settings;import android.telephony.TelephonyManager;import java.io.UnsupportedEncodingException;import java.util.UUID;public class DeviceUuidFactory {protected static final String PREFS_FILE = "device_id.xml";protected static final String PREFS_DEVICE_ID = "device_id";protected static volatile UUID uuid;public DeviceUuidFactory(Context context) {if (uuid == null) {synchronized (DeviceUuidFactory.class) {if (uuid == null) {final SharedPreferences prefs = context.getSharedPreferences(PREFS_FILE, 0);final String id = prefs.getString(PREFS_DEVICE_ID, null);if (id != null) {// Use the ids previously computed and stored in the// prefs fileuuid = UUID.fromString(id);} else {final String androidId = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);// Use the Android ID unless it's broken, in which case// fallback on deviceId,// unless it's not available, then fallback on a random// number which we store to a prefs filetry {if (!"9774d56d682e549c".equals(androidId)) {uuid = UUID.nameUUIDFromBytes(androidId.getBytes("utf8"));} else {TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);final String deviceId = telephonyManager.getDeviceId();uuid = deviceId != null ? UUID.nameUUIDFromBytes(deviceId.getBytes("utf8")) : UUID.randomUUID();}} catch (UnsupportedEncodingException e) {throw new RuntimeException(e);}// Write the value out to the prefs fileprefs.edit().putString(PREFS_DEVICE_ID, uuid.toString()).commit();}}}}}/*** Returns a unique UUID for the current android device. As with all UUIDs,* this unique ID is "very highly likely" to be unique across all Android* devices. Much more so than ANDROID_ID is.* <p>* The UUID is generated by using ANDROID_ID as the base key if appropriate,* falling back on TelephonyManager.getDeviceID() if ANDROID_ID is known to* be incorrect, and finally falling back on a random UUID that's persisted* to SharedPreferences if getDeviceID() does not return a usable value.* <p>* In some rare circumstances, this ID may change. In particular, if the* device is factory reset a new device ID may be generated. In addition, if* a user upgrades their phone from certain buggy implementations of Android* 2.2 to a newer, non-buggy version of Android, the device ID may change.* Or, if a user uninstalls your app on a device that has neither a proper* Android ID nor a Device ID, this ID may change on reinstallation.* <p>* Note that if the code falls back on using TelephonyManager.getDeviceId(),* the resulting ID will NOT change after a factory reset. Something to be* aware of.* <p>* Works around a bug in Android 2.2 for many devices when using ANDROID_ID* directly.** @return a UUID that may be used to uniquely identify your device for most* purposes.* @see http://code.google.com/p/android/issues/detail?id=10603*/public UUID getDeviceUuid() {return uuid;}}  
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: