2015-10-12 93 views
2

我想以編程方式獲取設備序列號。我用下面一行:Android獲得序列號

Build.SERIAL 

它返回類似:

95b9efad04ad28

但是我去了設備上的設置,我可以看到,它會顯示一個不同的字符串:

enter image description here

任何人都可以指向正確的方向嗎?

+0

我使用'聯想S660'上'4.4.2'運行並返回正確的值。你正在使用什麼設備或版本? – Mithun

+1

[如何找到Android設備的序列號?]可能的重複(http://stackoverflow.com/questions/2322234/how-to-find-serial-number-of-android-device) – RvdK

回答

0

這是不是你的答案?:

TelephonyManager tManager = (TelephonyManager)myActivity.getSystemService(Context.TELEPHONY_SERVICE); 
String uid = tManager.getDeviceId(); 

我發現它在here

+0

可悲的不是。我試過這個,但它返回null。這是一個平板電腦,所以不知道這是否有所作爲 –

0

我試圖讓設備的序列號編程

此功能上破Android的年齡。有些設備會返回null,有些設備會爲所有設備返回相同的ID等。如果您的應用正在使用Google Play服務,請改爲使用InstanceId,或者查看此內容,但現在仍然是古老的,但仍然有效,blog post

0

在活動

public static String getDeviceId(Context context) { 
    final String deviceId = ((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId(); 
    if (deviceId != null) { 
     return deviceId; 
    } else { 
     return android.os.Build.SERIAL; 
    } 
} 
+0

這不是一個很好的解決方案。你甚至沒有閱讀OP的問題。他確實使用'Build.SERIAL',但沒有返回正確的序列。我有同樣的問題。 deviceId對我而言返回null,因爲它是沒有SIM卡的平板電腦(沒有IMEI)。 – Vucko

1

這個工作對我試試這個:

String serialNumber; 

try { 
    Class<?> c = Class.forName("android.os.SystemProperties"); 
    Method get = c.getMethod("get", String.class, String.class); 

    serialNumber = (String) get.invoke(c, "sys.serialnumber", "error"); 
    if (serialNumber.equals("error")) { 
     serialNumber = (String) get.invoke(c, "ril.serialnumber", "error"); 
    } 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
0

由於Android的ID是在許多設備上破和Android建立的一致好評,我使用了Android ID的混合和設備WIFI-MAC地址,每個設備都是唯一的。 無論Android ID是否爲空,它們都用於創建始終唯一的UUID。

嘗試是沿着此線:

final WifiManager wm = (WifiManager) myAct.getSystemService(Context.WIFI_SERVICE); 
String macAddr = null; 
if (wm != null) 
    macAddr = wm.getConnectionInfo().getMacAddress(); 
String androidId = Secure.getString(myAct.getContentResolver(), Secure.ANDROID_ID); 

if (androidId == null) 
    androidId = "0000000000000000"; 

if (macAddr == null || macAddr.contains("\\s+") || !macAddr.contains(":")) 
    macAddr = "00:00:00:00:00:00"; 

UUID deviceUuid = new UUID(macAddr.hashCode(), androidId.hashCode()); 
String deviceId = deviceUuid.toString();