it-swarm.com.de

Ist Secure.Android_ID für jedes Gerät eindeutig?

Ich benutze diesen Anruf:

Secure.getString(getApplicationContext().getContentResolver(), Secure.Android_ID);

So erhalten Sie eine UID für das Gerät. Ich glaube, ich bekomme dieselbe ID von mehreren Geräten. Sollte das möglich sein? 

Die fragliche ID lautet: 9774d56d682e549c. Anscheinend gibt es ein Problem mit mehreren Geräten, die diese ID zurückgeben. Http://code.google.com/p/Android/issues/list?cursor=10603&updated=1060993403

61
FoamyGuy

Check in diesen Thread ,. Sie sollten jedoch vorsichtig sein, da dies dokumentiert ist, da sich "beim Zurücksetzen auf Werkseinstellungen ändern kann". Die Verwendung erfolgt auf eigenes Risiko und kann auf einem gerooteten Telefon leicht geändert werden. Es scheint auch so, als hätten einige Hersteller Probleme damit, dass ihre Telefone doppelte Nummern thread haben. Abhängig davon, was Sie versuchen zu tun, würde ich dies wahrscheinlich nicht als UID verwenden.

29
ninjasense

Mit Android O ändert sich das Verhalten der Android_ID. Die Android_ID unterscheidet sich pro App pro Benutzer auf dem Telefon.

Aus: https://Android-developers.googleblog.com/2017/04/changes-to-device-identifiers-in.html

Android-ID

In O hat die Android-ID (Settings.Secure.Android_ID oder SSAID) für jede App und jeden Benutzer auf dem Gerät einen anderen Wert. Entwickler, die eine Kennung für den Gerätebereich benötigen, sollten stattdessen eine rücksetzbare Kennung verwenden, z. B. eine Werbe-ID, die dem Benutzer mehr Kontrolle gibt. Die Werbe-ID bietet auch eine Einstellung für den Benutzer, um die Anzeigenverfolgung zu begrenzen. 

Zusätzlich in Android O: 

  • Der Android_ID-Wert wird bei der Deinstallation/Neuinstallation des Pakets nicht geändert, da , Solange der Paketname und der Signaturschlüssel identisch sind. Apps können sich auf diesen Wert verlassen, um den Status bei Neuinstallationen aufrechtzuerhalten. 
  • Wenn eine App auf einem Gerät installiert wurde, auf dem eine frühere Version von Android ausgeführt wird, bleibt die Android-ID unverändert, wenn das Gerät auf Android O aktualisiert wird, sofern die App nicht deinstalliert und erneut installiert wird. 
  • Der Android-ID-Wert ändert sich nur, wenn das Gerät auf die Werkseinstellung zurückgesetzt wird oder wenn der Signaturschlüssel zwischen Deinstallation und
    Ereignisse erneut installieren. 
  • Diese Änderung ist nur für Gerätehersteller erforderlich, die mit Google Play-Diensten und Werbe-ID versandt werden. Andere -Hersteller können eine alternative rücksetzbareID bereitstellen oder weiterhin die Android-ID bereitstellen.
19
userM1433372

Wenn Sie also etwas Besonderes für das Gerät selbst wünschen, ist TM.getDeviceId()sollte ausreichend. 

Hier ist der Code, der zeigt, wie Sie die Telefonmanager-ID erhalten. Die von Ihnen verwendete Android-Geräte-ID kann in den Werkseinstellungen geändert werden. Außerdem haben einige Hersteller Probleme, eine eindeutige ID zu vergeben.

TelephonyManager tm = 
        (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
String androidId = Secure.getString(this.getContentResolver(), Secure.Android_ID);
Log.d("ID", "Android ID: " + androidId);
Log.d("ID", "Device ID : " + tm.getDeviceId());

Stellen Sie sicher, dass Sie Berechtigungen für TelephonyManager verwenden, indem Sie verwenden

<uses-permission Android:name="Android.permission.READ_PHONE_STATE" />
13

Ich habe ein paar Dinge darüber gelesen und leider sollte die Android_ID nicht zur eindeutigen Identifizierung eines einzelnen Geräts herangezogen werden.

Es scheint nicht in den Android-Compliance-Anforderungen durchgesetzt zu werden, und die Hersteller scheinen es so zu implementieren, wie sie es wünschen, einschließlich einiger, die es eher als Modell-ID verwenden.

Beachten Sie auch, dass ein Hersteller, der einen Generator geschrieben hat, um eine UUID (z. B.) zu erstellen, das Zurücksetzen auf die Werkseinstellungen nicht garantiert.

6
Squonk

Geben Sie einfach eine alternative Lösung an, die Werbe-ID:

https://support.google.com/googleplay/Android-developer/answer/6048248?hl=en

Aus dem obigen Link kopiert:

Die Werbe-ID ist eine eindeutige, vom Benutzer zurücksetzbare ID für Werbung, die von Google Play-Diensten bereitgestellt wird. Benutzer erhalten so eine bessere Kontrolle und erhalten Entwickler mit einem einfachen Standardsystem, mit dem sie ihre Apps weiter monetarisieren können. Benutzer können ihre Kennung in Google Play-Apps zurücksetzen oder personalisierte Anzeigen (früher als interessenbasierte Anzeigen bekannt) abwählen.

Die Einschränkungen sind:

  1. Nur Google Play-fähige Geräte.
  2. Datenschutzerklärung: https://support.google.com/googleplay/Android-developer/answer/113469?hl=en&rd=1#privacy
1
semicircle21
//Fields
String myID;
int myversion = 0;


myversion = Integer.valueOf(Android.os.Build.VERSION.SDK);
if (myversion < 23) {
        TelephonyManager mngr = (TelephonyManager) 
getSystemService(Context.TELEPHONY_SERVICE);
        myID= mngr.getDeviceId();
    }
    else
    {
        myID = 
Settings.Secure.getString(getApplicationContext().getContentResolver(), 
Settings.Secure.Android_ID);
    }

Ja, Secure.Android_ID ist für jedes Gerät eindeutig.

0
boraberka