1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

DeviceId (IMEI) ist null? (DRINGEND!)

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Chaoz, 28.05.2010.

  1. Chaoz, 28.05.2010 #1
    Chaoz

    Chaoz Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    141
    Erhaltene Danke:
    12
    Registriert seit:
    23.03.2010
    Phone:
    Nexus One
    Hi Leute,

    nachdem ich meine App in den Appstore gestellt habe,
    bekomm ich nun von div. Leuten supportmeldungen, weil ihre Registrierung Fehlgeschlagen ist.

    Auf meinen 8 Geräten läuft alles super... (Android 1.5 - 2.1)
    die zweite Zeile

    Code:
    TelephonyManager mTelephonyMgr = (TelephonyManager) m_oActivity.getSystemService(Context.TELEPHONY_SERVICE);
    String strImei = mTelephonyMgr.getDeviceId();
    scheint "" zurückzugeben... aber warum????? =(=(=(

    Ich bin für jeden Rat dankbar!
    Gruß
    Chaoz

    new edit:
    "getDeviceId()" gibt nicht immer die IMEI oder MEID aus, sondern auch "andere" IDs, welche insgesamt nicht eineindeutig sind. =/ (siehe post 2te seite)
     
    Zuletzt bearbeitet: 01.06.2010
  2. the_alien, 28.05.2010 #2
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    Weisst du welche User das schreiben? Immerhin kann getDeviceId() auch null zurückgeben wenn keine Device ID da ist, so zum Beispiel bei Tablets!
     
  3. Chaoz, 28.05.2010 #3
    Chaoz

    Chaoz Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    141
    Erhaltene Danke:
    12
    Registriert seit:
    23.03.2010
    Phone:
    Nexus One
    Leider nicht, aber so viele nicht-Smartphone Geräte gibt es glaube noch gar nicht oder? Der Fehler tritt ja bei mehreren Usern auf.

    Ein "Workarround" wäre
    Code:
    System.getProperty(Settings.Secure.ANDROID_ID)
    Aber ich checke serverseitig auf die Richtigkeit der Imei, der umbauaufwand wäre einfach zu groß. =(

    Noch jmd eine Idee?
     
  4. the_alien, 28.05.2010 #4
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    Zuletzt bearbeitet: 28.05.2010
  5. Chaoz, 28.05.2010 #5
    Chaoz

    Chaoz Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    141
    Erhaltene Danke:
    12
    Registriert seit:
    23.03.2010
    Phone:
    Nexus One
    hm,... ist nur die frage warum er nicht fertig ist und warum der fehler bei mir nicht auftritt =/
    Ich würde maximal versuchen ein "wenn fehler, dann versuchs nochmal" machen... aber das kann keine lösung sein ^^
     
  6. the_alien, 28.05.2010 #6
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    Nein, eine Lösung ist das definitiv nicht. Mal im #android-dev channel auf Freenode fragen?
     
  7. BeRo, 28.05.2010 #7
    BeRo

    BeRo Android-Hilfe.de Mitglied

    Beiträge:
    103
    Erhaltene Danke:
    26
    Registriert seit:
    20.07.2009
    Du brauchst die "android.permission.READ_PHONE_STATE" Permission in deinem Manifest, damit es überhaupt korrekt funktionieren kann.
     
  8. the_alien, 28.05.2010 #8
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    Muss er doch haben, sonst hätte es geknallt.
     
  9. Konni, 29.05.2010 #9
    Konni

    Konni Android-Hilfe.de Mitglied

    Beiträge:
    104
    Erhaltene Danke:
    11
    Registriert seit:
    11.05.2010
    Vielleicht testweise mal einen Timer einbauen, der im Sekundentakt versucht die IMEI auszulesen, wenn beim ersten Versuch null zurückkam.

    Immer ärgerlich, wenn man einen Bug nicht selbst reproduzieren kann. Das ist ja fast schon ein Bugfoot [1]. ;)

    Gruß
    Konni

    [1] New Programming Jargon ? Global Nerdy
     
    Fr4gg0r bedankt sich.
  10. Chaoz, 29.05.2010 #10
    Chaoz

    Chaoz Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    141
    Erhaltene Danke:
    12
    Registriert seit:
    23.03.2010
    Phone:
    Nexus One
    @bero: alien hat recht, würde sonst knallen ^^

    @konni: nette idee, aber ich kann den fehler nich nachstellen und kann meinen usern nicht testprogramme zuschicken... (sind ja keine direkten user die ich kenne, nur leute die die app laden und mir n fehlerlog zuschicken via market...)

    ...noch jmd eine idee? =/
     
  11. Konni, 29.05.2010 #11
    Konni

    Konni Android-Hilfe.de Mitglied

    Beiträge:
    104
    Erhaltene Danke:
    11
    Registriert seit:
    11.05.2010
    Du könntest es aber quasi als Dirty Hack einbauen und schauen, ob immer noch Beschwerden kommen. Es sind nur wenige Zeilen und für die, bei denen es sowieso schon funktioniert hat, ändert sich nichts.

    Wenn dann immer noch Beschwerden kommen, kannst du es in der nächsten Version wieder entfernen.

    Gruß
    Konni
     
  12. Chaoz, 30.05.2010 #12
    Chaoz

    Chaoz Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    141
    Erhaltene Danke:
    12
    Registriert seit:
    23.03.2010
    Phone:
    Nexus One
    soweit die theorie... (ja ok, klappt ja auch... ABER...)
    ich kann meinem release manager schlecht sagen er soll ma ne neue version promoten die eigtl nur nem Test dient =/

    (Ich glaub im worst case wirds darauf hinaus laufen ^^ )
     
  13. Konni, 30.05.2010 #13
    Konni

    Konni Android-Hilfe.de Mitglied

    Beiträge:
    104
    Erhaltene Danke:
    11
    Registriert seit:
    11.05.2010
    Und wenn du ein spezielles TelephonyManager-Test-Tool erstellst, welches genau das prüft? Das kannst du dann ja den Nutzern dann anbieten, die Probleme haben ...

    Gruß
    Konni
     
  14. Chaoz, 31.05.2010 #14
    Chaoz

    Chaoz Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    141
    Erhaltene Danke:
    12
    Registriert seit:
    23.03.2010
    Phone:
    Nexus One
    ...wie gesagt... ich habe kein (direkten) Kontakt zu den Nutzern, das geht alles über ne Supportabteilung und selbst die warten sich n wolf aufn reply vom endanwender =/ ... naja... ma sehen was draus wird...
     
  15. SirMArtin, 31.05.2010 #15
    SirMArtin

    SirMArtin freier Samsungsupporter

    Beiträge:
    113
    Erhaltene Danke:
    7
    Registriert seit:
    05.08.2009
    Ich hab mal gehört, dass bei unsachgemäßem Flashen (z.B. unsachgemäß gekochte Custom-ROMs) die IMEI verschwinden oder gar multipliziert werden können.

    Vielleicht hilft das bei der Suche nach dem Problem...:confused:
     
  16. Chaoz, 01.06.2010 #16
    Chaoz

    Chaoz Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    141
    Erhaltene Danke:
    12
    Registriert seit:
    23.03.2010
    Phone:
    Nexus One
    ok,... das wäre möglich.. aber ich kann mir nich vorstellen dass jeder 4te meiner nutzer ein geflashtes rom hat... sowas ist doch glaube nur unter den "geeks" verbreitet ^^
     
  17. SirMArtin, 01.06.2010 #17
    SirMArtin

    SirMArtin freier Samsungsupporter

    Beiträge:
    113
    Erhaltene Danke:
    7
    Registriert seit:
    05.08.2009
    Hm. Vermutlich nicht. Es müsste dann ja auch noch ein fehlerhaftes ROM sein...
     
  18. Chaoz, 01.06.2010 #18
    Chaoz

    Chaoz Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    141
    Erhaltene Danke:
    12
    Registriert seit:
    23.03.2010
    Phone:
    Nexus One
    so.. ich hab rausgefunden,
    dass ich bei "getDeviceId()" KEINE IMEI sondern eine 12stellige dezimalZahl [100001350757] herausgibt.... (und einmal sogar eine 10stellige hex..[0000015216]) ich "glaube" dass es eine MEID ist...

    einer meiner kunden hat ein CDMA gerät und hat das problem....

    ...irgend jemand eine idee, wieso das so ist? O_O
     
  19. sebastian, 02.06.2010 #19
    sebastian

    sebastian Fortgeschrittenes Mitglied

    Beiträge:
    271
    Erhaltene Danke:
    74
    Registriert seit:
    11.05.2009
    Also dein Problem wie auch deine jetzt gefunden Erkenntnisse hättest du auch mit einem Blick in die Doku sehen können :rolleyes: Schau mal rein:

    TelephonyManager | Android Developers

    Dort steht auch "for example", muss also wohl nicht immer die IMEI/MEID sein. ...aber schaun wir doch mal was man sonst noch nehmen könnte. Mit minimalem Aufwand bei google bisschen rumgesucht und was findet man da:

    strazzere.com Blog Archive Uniquely Identifying Android Devices without special permissions.

    Das sieht doch ziemlich gut aus:
    Viel Spaß damit! :) Und bei nächsten Mal vielleicht nicht alles so hektisch angehen, dann übersieht man wichtige Dinge nicht so schnell.


    Edit: Doch gar nicht so einfach. ANDROID_ID könnte in manchen Fällen ebenfalls null zurückgeben, da der Wert wohl erst nach Anmeldung im Market generiert wird. Bliebe noch die MAC Adresse vom WLAN, aber natürlich hat nicht unbedingt jedes Gerät WLAN. So bleibt dir nur eine Kombination aus mehreren Dingen oder gleich auf Benutzername + Passwort umsteigen wenn das geht.

    Hier ein Thread in dem darüber diskutiert wird:
    http://groups.google.com/group/andr...cad48a7fb7/42aceb303e8b42f6?#42aceb303e8b42f6
     
    Zuletzt bearbeitet: 02.06.2010
  20. Chaoz, 02.06.2010 #20
    Chaoz

    Chaoz Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    141
    Erhaltene Danke:
    12
    Registriert seit:
    23.03.2010
    Phone:
    Nexus One
    danke für die antwort,
    aber wie du schon im edit meintest, "so einfach" ist es nun doch nicht.
    mein größtes problem war, dass dutzende libraries und servermodule auf die richtigkeit der IMEI geprüft haben, von daher wollte ich die ANDROID_ID ungern nutzen.

    Die links die du gepostet hast, waren mir bereits bekannt, dass getDeviceID nicht zwangsweise die IMEI ausgibt, ist mir aber erst später aufgefallen. (Eigtl n fehler in der API, wenn ich die IMEI brauche, dann brauch ich auch ne imei und nich "irgendwas"... ^^)

    wie dem auch sei... ich hab den bug andersweitig gefixxt, danke nochma an alle bdie mir tips gegeben haben.

    Gruß
    chaoz
     

Diese Seite empfehlen