DeviceId (IMEI) ist null? (DRINGEND!)

Chaoz

Chaoz

Fortgeschrittenes Mitglied
13
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:
Weisst du welche User das schreiben? Immerhin kann getDeviceId() auch null zurückgeben wenn keine Device ID da ist, so zum Beispiel bei Tablets!
 
the_alien schrieb:
Weisst du welche User das schreiben? Immerhin kann getDeviceId() auch null zurückgeben wenn keine Device ID da ist, so zum Beispiel bei Tablets!

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?
 
the_alien schrieb:
Vielleicht solltest du mal in Erfahrung bringen bei welchen Geräten das passiert.
Und vielleicht einen der User als Versuchskaninchen missbrauchen ;)

PS: Laut dem Blogeintrag kann der TelephonyManager noch nicht fertig sein:
How to Get the Phone IMEI Android Software Developer

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 ^^
 
Nein, eine Lösung ist das definitiv nicht. Mal im #android-dev channel auf Freenode fragen?
 
Du brauchst die "android.permission.READ_PHONE_STATE" Permission in deinem Manifest, damit es überhaupt korrekt funktionieren kann.
 
Muss er doch haben, sonst hätte es geknallt.
 
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
 
  • Danke
Reaktionen: Fr4gg0r
@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? =/
 
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
 
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 ^^ )
 
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
 
Konni schrieb:
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

...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...
 
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:
 
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 ^^
 
Hm. Vermutlich nicht. Es müsste dann ja auch noch ein fehlerhaftes ROM sein...
 
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
 
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:
public static final String ANDROID_ID

Since: API Level 3
A 64-bit number (as a hex string) that is randomly generated on the device's first boot and should remain constant for the lifetime of the device. (The value may change if a factory reset is performed on the device.)

Constant Value: "android_id"
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:
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
 

Ähnliche Themen

U
  • unerfahrenerAppEntwickler
Antworten
3
Aufrufe
709
swa00
swa00
M
  • mrezzonico
Antworten
0
Aufrufe
556
mrezzonico
M
Zurück
Oben Unten