2014-11-05 11 views
11

Ich muss den Hardware-Seriencode des Android-Geräts abrufen, auf dem meine App installiert ist. Diese Hardware-Seriennummer ist diejenige, die Sie unter Settings > About Device > Status > Serial number sehen können.Hardware-Seriennummer des Android-Geräts abrufen

Ich obwohl ich es mit Settings.Secure.ANDROID_ID or android.os.Build.SERIAL bekommen würde, aber keiner von ihnen funktionierte, was bedeutet, dass sie mir nicht den eindeutigen Identifikator gaben, den ich suche. Zum Beispiel android.os.Build.SERIAL habe mir die eindeutige ID auf ADB angezeigt, wenn Sie den Befehl adb Geräte ausführen.

Beachten Sie, dass das Ziel dieser Frage nicht darin besteht, einen anderen eindeutigen Bezeichner zu finden, der mir helfen könnte, sondern nur die Seriennummer der Geräte-Hardware.

Danke für die Hilfe.

EDIT:

Bitte klar, dass ich nicht für den Wert bin auf der Suche nach dem String android.os.BUILD.SERIAL zur Verfügung gestellt. Ich weiß, wie ich diesen Wert erreichen kann, aber ich bin nicht daran interessiert.

Ich habe ein Samsung-Gerät, daher ist die Seriennummer, die sie verwendeten, anders als die, die von android.os.BUILD.SERIAL zur Verfügung gestellt wird.

+0

Posten Sie Ihren Code und erklären Sie auch, warum Sie denken, dass es nicht funktioniert –

+0

@FedeBucich Es ist, dass es nicht funktioniert, es ist, dass ich andere eindeutige Bezeichner bekomme, die nicht die sind, die ich suche. Ich muss die Einstellungen abrufen, die ich überprüfen kann, nicht die, die ich erhalte, wenn ich das Gerät über ADB oder andere eindeutige IDs mit dem PC verbinde. – Storo

+0

@Funkystein Es tut mir leid, aber es hat nichts damit zu tun, da sie in diesem Beitrag daran interessiert sind, android.os.Build.Serial zu verwenden, was nicht die eindeutige ID ist, die ich brauche. – Storo

Antwort

13

Die Lösung ist sehr einfach:

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

Dies wird die Seriennummer der meisten Samsung-Geräte bekommen. Ich verwende den Wert "sys.serialnumber", um die Seriennummer meiner SM-T210- (Galaxy Tab 3) und SM-T230-Tablets (Galaxy Tab 4) zu erhalten, funktioniert aber wahrscheinlich mit wesentlich mehr Samsung-Tablets. Die "ril.serialnumber" soll den Wert meines Samsung GT-I8550L (Galaxy Win) erreichen.

Ich hoffe, das hilft.

+2

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

+1

Es hat nicht für mich funktioniert. Aber das tat: http://stackoverflow.com/questions/11029294/android-how-to-programmatical-access-the-device-serial-number-shown-in-the-av – unludo