[Frage] Device eindeutig erkennen

  • Hallo zusammen,


    ich habe eine Frage und hoffe, dass Ihr mir helfen könnt. Ich möchte in einer App ein Device eindeutig erkennen und habe im Internet nach diversen Lösungen gesucht. Dabei bin ich immer wieder auf ein Stück Quellcode gestoßen und oft wird dieses auch empfohlen. Was ich aber nicht verstehe ist - Was macht es genau


    Code
    final TelephonyManager tm = (TelephonyManager) getBaseContext().getSystemService(Context.TELEPHONY_SERVICE);final String tmDevice, tmSerial, androidId;tmDevice = "" + tm.getDeviceId();tmSerial = "" + tm.getSimSerialNumber();androidId = "" + android.provider.Settings.Secure.getString(getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);UUID deviceUuid = new UUID(androidId.hashCode(), ((long)tmDevice.hashCode() << 32) | tmSerial.hashCode());this.deviceID = deviceUuid.toString();


    Wäre super, wenn mir da jemand genauer erklären könnte was da gemacht wird und ob es für jedes Gerät wirklich eindeutig ist.


    Danke


    PS: Ich habe versucht den Code vernünftig zu formatieren, es will aber nicht klappen.

  • Am Anfang erstmal ein Tipp, schau dir den Code nicht in einer Zeile an.
    Das ist total unleserlich und keiner kann mit einer solch langen Zeile etwas anfangen.


    Nun zur Bedeutung:

  • Wenn du in der Titelleiste des Editors auf Code oder JavaCode klickst bekommst du einen "Tag"


    Darin kannst du deinen Text einfach mit Zeilenumbrüchen formatieren.
    Die Farbgebung ist je nach Tag-Art anders, ich hab die Java-Tags genutzt.

  • Nun die unweigerliche Frage: wozu das Ganze?
    Es gibt absolut keinen plausiblen Grund ein Gerät eindeutig zu identifizieren.
    Bei mir werden Apps mit 'kann auf ihre Geräteidentifikation zugreifen' stumpf nicht installiert.


    Zur Funktionsweise
    Du generierst Dir eine UUID aus einer Zeichenkette, die aus drei Teilen besteht:
    Device ID des Herstellers (IMEI/MEID), Seriennummer der SIM (ICCID) und Android ID.


    Packt der Benutzer seine Zweit-SIM rein oder aktualisiert sein Android System, sprich: ändert sich irgend etwas an der Konfiguration des Gerätes, dann bekommst Du eine neue UUID. Das ist (meiner Meinung nach) totaler Bullshit.


    Zur eindeutigen Identifikation eines Gerätes reicht die IMEI/MEID, die Du via telephonyManager.getDeviceId() bekommst.
    Alles Andere ist der Versuch der eindeutigen Benutzeridentifizierung und es gibt viele Möglichkeiten, das Ergebnis zu verfälschen.
    (Einige custom roms wie cyanogen bieten beispielsweise die Möglichkeit, Fake-Informationen zurückzugeben.)


    Der von Google empfohlene Weg zur eindeutigen Identifizierung des Anwenders ist die Nutzung der Google+ API.
    Vergleiche dazu die Diskussion auf einer entsprechenden StackOverflow Frage (Englisch)


    Aber nach wie vor lautet die Frage: warum möchtest Du ein Gerät eindeutig identifizieren?

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!