Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Delphi Delphi 10.3.3 Android 10 (https://www.delphipraxis.net/203334-delphi-10-3-3-android-10-a.html)

Chaosfreak 7. Feb 2020 12:55

Delphi 10.3.3 Android 10
 
Hallo,

ich habe ein Problem beim Auslesen der IMEI eines Smartphones auf Geräten mit Android 10.
Die Methode getIMEI() des TelephonyManager liefert mir zwar eine Nummer, diese stimmt aber nicht der IMEI überein. Bis Android 9 funktionierte das alles noch.

Aus der Dokumentation geht hervor das ab API-Level 26 die Berechtigung READ_PRIVILEGED_PHONE_STATE dafür notwendig ist. Ich finde die aber in Delphi 10.3.3 nicht.

Hat evt. jemand das gleich Problem?

AuronTLG 7. Feb 2020 13:25

AW: Delphi 10.3.3 Android 10
 
Hier ist der Grund dafür.

Kurz gesagt hat sich Android entschieden, bestimmte Geräteinformationen hinter einer privilegierten Berechtigung zu verstecken, welche nur unter bestimmten Umständen gewährt wird, welche unter dem Link zu finden sind.

Du müsstest also mal gucken, inwiefern das bei deiner App erreichbar ist.

himitsu 7. Feb 2020 14:07

AW: Delphi 10.3.3 Android 10
 
Vielleicht kennt Delphi das neue READ_PRIVILEGED_PHONE_STATE noch nicht?

Ich glaub man konnte sowas aber auch irgendwie direkt in irgendeine Datei eintragen, auch wenn es GUI selber das noch nicht kann.


Zitat:

Zitat von AuronTLG (Beitrag 1456923)
Kurz gesagt hat sich Android entschieden

Das hier betrifft den Datenschutz und geht auch in Richtung Tracking-Schutz.

Es ist auch gut so, dass die Sicherheit weiter verbessert wird. (OK, auch wenn Google/Android standardmäßig selbst auch noch zuviele Infos abgreift)
Auch schön, dass man, gegenüber älteren Androids, inzwischen Anwendungen auch geziehlt Rechte wegnehmen und teilweise durch "Dummies" ersetzen kann,
bzw. die Anwendung nicht nur installieren kann, nachdem man alles gewehrt hat, was so manche Anwendung verlangt. (obwohl es für deren "eigentliche" Funktion garnicht "nötig" ist)

Chaosfreak 7. Feb 2020 14:20

AW: Delphi 10.3.3 Android 10
 
Danke! Wir haben die IMEI bisher zu Lizenzzwecken genutzt. Ich werde das wohl umbauen und eine eigene Id erzeugen. Damit sind auch die Berechtigungen nicht mehr notwendig.

himitsu 7. Feb 2020 14:31

AW: Delphi 10.3.3 Android 10
 
Ist die Dummy-IMEI denn bei allen Geräten gleich, oder bekommst du dort für Gerät/Benutzer dennoch was Unterschiedliches?
(maximal bei Erstellen eines Users bzw. Einrichtung des Gerätes oder bei Erstinstallation deiner App zufällig erstellt)

Dann brauchst ja selbst nichts Eigenes zu erfinden und kannst die Nummer weiterhin verwenden.

philipp.hofmann 7. Feb 2020 15:18

AW: Delphi 10.3.3 Android 10
 
Zitat:

Ich glaub man konnte sowas aber auch irgendwie direkt in irgendeine Datei eintragen, auch wenn es GUI selber das noch nicht kann.
In der Delphi-IDE unbekannte Permissions kann man wahrscheinlich in der Datei AndroidManifest.template.xml eintragen (hier ist die zweite Zeile eingefügt):
Code:
   
    <uses-sdk android:minSdkVersion="%minSdkVersion%" android:targetSdkVersion="%targetSdkVersion%" />
    <uses-permission android:name="android.permission.XYZ" />
    <%uses-permission%>
Bei MacOS gibt es definitiv mir bekannte Permissions für die man dies tun muss.
Ich empfehle immer zusätzlich ein Ticket bei https://quality.embarcadero.com aufzumachen, damit EMBT diese Permission in der IDE einfügt.

Und ich nutze aktuell die folgende Implementierung um eine ID für die Lizenz zu erzeugen:
Delphi-Quellcode:
    result := JStringToString(TJSettings_Secure.JavaClass.getString(TAndroidHelper.Activity.getContentResolver,TJSettings_Secure.JavaClass.ANDROID_ID));
    if (result = '') then
      result:=JStringToString(TJBuild.JavaClass.SERIAL);

Luckie 7. Feb 2020 15:51

AW: Delphi 10.3.3 Android 10
 
Bitte formuliere den Titel so, dass er etwas über dein Problem oder Frage aussagt. Der jetzige lässt keinerlei Rückschlüsse auf dein Problem.

Editiere dazu deinen ersten Beitrag und klicke auf "Erweitert", um den Titel zu editieren.

Vielen Dank.

QuickAndDirty 20. Feb 2020 12:20

AW: Delphi 10.3.3 Android 10
 
Falls es dir um das Tracken des Gerätes geht. Das möchte man nicht so gerne und es geht auch echt schwer...Insbesondere manche China-Tabletts haben zum Teil alle die selbe IMEI oder Seriennummer. IMEI und Telefonnummer fallen weg, wenn das Gerät nicht telefonieren kann.
Relativ zuverlässig war mal die WLAN-Macadresse, aber da gibts auch Chinageräte mit identischen W-LAN Macadressen.
Das Einzige was wirklich trackbar ist, ist die Installation der Instanz deiner App mittels UUID von Android...
Deshalb benutze ich plattformübergreifend ein Verfahren, das eine ID von unserem Server generieren lässt und speichert. Dann braucht man für einen ID-Wechsel zwar nur die Daten der App löschen, aber man hat ein identisches Verfahren auf allen Plattformen.

Wenn man zur ID noch einen Handshake mit TAN-Austausch ausführt, dann kann mann sogar Kopien von IDs erkennen und sie deaktivieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf