2014-11-05 31 views
11

Ho bisogno di ottenere il codice seriale hardware del dispositivo Android in cui è installata la mia app. Questo numero di serie hardware è quello che è possibile vedere su Settings > About Device > Status > Serial number.Ottieni il numero di serie hardware del dispositivo Android

Mi piacerebbe ottenerlo usando Settings.Secure.ANDROID_ID or android.os.Build.SERIAL, ma nessuno di loro ha funzionato, il che significa che non mi hanno dato un identificatore univoco che sto cercando. Ad esempio android.os.Build.SERIAL mi ha ottenuto l'ID univoco mostrato su ADB quando si esegue il comando dispositivi adb.

Si noti che l'obiettivo di questa domanda non è quello di trovare un altro identificatore univoco che potrebbe aiutarmi, si tratta solo di ottenere il numero di serie dell'hardware del dispositivo.

Grazie per l'aiuto.

EDIT:

Si prega di essere chiaro che non sto cercando il valore fornito dalla stringa android.os.BUILD.SERIAL. So come ottenere quel valore ma non mi interessa.

Ho un dispositivo Samsung, quindi il numero di serie utilizzato è diverso da quello fornito da android.os.BUILD.SERIAL.

+0

Inserisci il tuo codice e spiega anche perché pensi che non funzioni –

+0

@FedeBucich È che non funziona è che ottengo altri identificatori univoci che non sono quello che sto cercando. Ho bisogno di ottenere quello che posso controllare sulle impostazioni, non quello che ottengo quando connetto il dispositivo al PC usando ADB, o altri ID univoci. – Storo

+0

@Funkystein Mi dispiace ma non ha nulla a che fare con esso, dal momento che su quel post sono interessati a utilizzare android.os.Build.Serial, che non è l'ID univoco di cui ho bisogno. – Storo

risposta

13

La soluzione è molto semplice:

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"); 
} 

questo modo si ottiene il numero di serie della maggior parte dei dispositivi Samsung. Uso il valore "sys.serialnumber" per ottenere il numero di serie dei miei tablet SM-T210 (Galaxy Tab 3) e SM-T230 (Galaxy Tab 4), ma probabilmente funziona con molte più compresse Samsung. Il "ril.serialnumber" è quello di ottenere il valore sul mio Samsung GT-I8550L (Galaxy Win).

Spero che questo aiuti.

+2

Galaxy Tab 2 (GT-P3113) utilizza stranamente 'ril.serialnumber' ([so question] (http://stackoverflow.com/questions/14161282/serial-number-from-samsung-device-running-android) e [ gist] (https://gist.github.com/jgold6/f46b1c049a1ee94fdb52)). – dev

+1

Non ha funzionato per me. Ma questo ha fatto: http://stackoverflow.com/questions/11029294/android-how-to-programmatically-access-the-device-serial-number-shown-in-the-av – unludo