
在设备首次启动时,系统会随机生成一个64位的数字,并把这个数字以16进制字符串的形式保存下来,这个16进制的字符串就是ANDROID_ID,当设备被wipe后该值会被重置。可以通过下面的方法获取:
import androID.provIDer.Settings;
String ANDROID_ID = Settings.System.getString(getContentResolver(),Settings.System.ANDROID_ID);
1
2
ANDROID_ID可以作为设备标识,但需要注意:
厂商定制系统的BUG:不同的设备可能会产生相同的ANDROID_ID:9774d56d682e549c。
厂商定制系统的BUG:有些设备返回的值为null。
设备差异:对于CDMA设备,ANDROID_ID和TelephonyManager.getdeviceid() 返回相同的值。
Sim Serial Number
装有SIM卡的设备,可以通过下面的方法获取到Sim Serial Number:
TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
String SimserialNumber = tm.getSimserialNumber();
注意:对于CDMA设备,返回的是一个空值!
import java.util.UUID;import androID.annotation.Suppresslint;import androID.content.Context;import androID.content.SharedPreferences;import androID.net.wifi.WifiInfo;import androID.net.wifi.WifiManager;import androID.telephony.TelephonyManager;import androID.provIDer.Settings;@Suppresslint("NewAPI") public class AndroIDUUID{ static public String getdeviceid(Context context) { StringBuilder deviceid = new StringBuilder(); // 渠道标志 deviceid.append("a"); try { //MAC WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); WifiInfo info = wifi.getConnectionInfo(); String wifiMac = info.getMacAddress(); if(wifiMac != null && !wifiMac.isEmpty()){ deviceid.append("mac"); deviceid.append(wifiMac); return deviceid.toString(); } //IMEI TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); String imei = tm.getdeviceid(); if(imei != null && !imei.isEmpty()){ deviceid.append("imei"); deviceid.append(imei); return deviceid.toString(); } String androIDID = Settings.System.getString(context.getContentResolver(),Settings.Secure.ANDROID_ID); if(androIDID != null && !androIDID.isEmpty()){ deviceid.append("androIDID"); deviceid.append(androIDID); return deviceid.toString(); } //序列号(sn) String sn = tm.getSimserialNumber(); if(sn != null && !sn.isEmpty()){ deviceid.append("sn"); deviceid.append(sn); return deviceid.toString(); } //如果上面都没有, 则生成一个ID:随机码 String uuID = getUUID(context); if(uuID != null && !uuID.isEmpty()){ deviceid.append("uuID"); deviceid.append(uuID); return deviceid.toString(); } } catch (Exception e) { e.printstacktrace(); deviceid.append("uuID").append(getUUID(context)); } return deviceid.toString(); } /** * 得到全局唯一UUID */ public static String getUUID(Context context){ String uuID = null; SharedPreferences sp = context.getSharedPreferences("SP",Context.MODE_PRIVATE); if(sp != null){ uuID = sp.getString("uuID",""); } if(uuID == null || uuID.isEmpty()){ uuID = UUID.randomUUID().toString(); SharedPreferences.Editor eIDtor = sp.edit(); eIDtor.putString("uuID",uuID); eIDtor.commit(); } return uuID; }}
总结以上是内存溢出为你收集整理的ANDROID_ID全部内容,希望文章能够帮你解决ANDROID_ID所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)