Android 11 wird auf den meisten neuen Telefonen ausgeliefert, aber Android 12 wurde überall auf Pixel-Geräten eingeführt. Nehmen Sie an diesem Webinar teil, um zu sehen, was sich in diesen neuesten Versionen von Android geändert hat, und sehen Sie sich einige Best Practices für die Android-Entwicklung mit Tipps für die Ausrichtung auf die neuesten Versionen des beliebtesten Betriebssystems an.
Sehen Sie sich Google Slides an oder laden Sie sie herunter
Table of Contents
Marktanteil von Desktop-, Mobil- und Tablet-Betriebssystemen weltweit
https://gs.statcounter.com/os-market-share/desktop-mobile-tablet/worldwide/#monthly-200901-202201
Marktanteil der Mobilfunkhersteller weltweit (Januar 2020 – Jan 2022)
https://gs.statcounter.com/vendor-market-share/mobile/worldwide/#monthly-202001-202202
Marktanteil der Mobilfunkhersteller weltweit (Januar 2022)
https://gs.statcounter.com/vendor-market-share/mobile/worldwide/#monthly-202001-202202
Android vs. iOS Marktanteil weltweit (Januar 2020 – Jan 2022)
https://gs.statcounter.com/vendor-market-share/mobile/worldwide/#monthly-202001-202202
Marktanteil der mobilen Android-Version weltweit (Januar 2020 – Jan 2022)
https://gs.statcounter.com/android-version-market-share/mobile/worldwide/#monthly-202001-202201
Mobile Android-Version – Marktanteil weltweit (Januar 2022)
Android 11 ist aktuell führend ( Versionen 9 bis 11 machen 76,4 % aus) .
- Android 12 wurde am 4. Oktober 2021 veröffentlicht
- Android 11 wurde am 8. September 2020 veröffentlicht
- Android 10 wurde am 3. September 2019 veröffentlicht
- Android 9 wurde am 6. August 2018 veröffentlicht
- Android 12 = API 31
- Android 11 = API 30
- Android 10 = API 29
- Android 9 = API 28 (Kuchen)
https://gs.statcounter.com/android-version-market-share/mobile/worldwide/#monthly-202001-202201
Sicherheits- und Leistungsanforderungen für Android Play
- Jedes Jahr wird die targetSdkVersion-Anforderung erweitert. Innerhalb eines Jahres nach jedem Android
- Release müssen neue Apps und App-Updates auf die aktualisierte API-Ebene oder höher ausgerichtet sein.
- November 2021:
- Ziel-API-Ebene 30 (Android 11)
- Veröffentlichen Sie im Android App Bundle-Format.
- Erforderlich für die Google Play Console
- Weitere Änderungen finden Sie im Leitfaden zur API-Migration: developer.android.com/distribute/best-practices/develop/target-sdk
Android-Änderungen in Delphi 11
*** – link
docwiki.embarcadero.com/RADStudio/Alexandria/en/What%27s_New
Unterstützung für Android 12?
Aktualisieren bestehender Android-Projekte
● Öffnen Sie ein Android-Projekt, das mit einer älteren Version erstellt wurde.
● Navigieren Sie zum andockbaren Fenster Projekte.
● Wählen Sie Android 32-Bit als aktive Zielplattform aus.
● Klicken Sie mit der rechten Maustaste auf den Knoten Bibliotheken.
● Klicken Sie auf Systemdateien auf Standard zurücksetzen.
● Anpassen mit Bibliotheken von Drittanbietern usw.
● Wiederholen für Android-64.
Aktualisieren Ihrer Android-Tools
- Delphi installiert optional Android SDK 25.2.5 und Updates während der Installation
- Fügen Sie ADB zu Ihrem Pfad hinzu:
- C:UsersPublicDocumentsEmbarcaderoStudio22.0CatalogRepositoryAndroidSDK-2525-22.0.42600.6491platform-tools
- Fügen Sie SDKManager zu Ihrem Pfad hinzu:
- C:UsersPublicDocumentsEmbarcaderoStudio22.0CatalogRepositoryAndroidSDK-2525-22.0.42600.6491toolsbin
- Laufen:
- ADB-Kill-Server
- SDKManager —aktualisieren
- adb-Version
- Wenn Sie eine Fehlermeldung erhalten: „.android/repositories.cfg konnte nicht geladen werden.“
- Stellen Sie sicher, dass Sie einen .android-Ordner in Ihrem Benutzerverzeichnis haben
- Erstellen Sie eine leere repositories.cfg-Datei
- Neueste Version (ab Februar 2022)
- Android Debug Bridge-Version 1.0.41
- Version 32.0.0-8006631
Drahtloses Debugging
- Hinzugefügt in Android 11 (API 30)
- Wechseln Sie in den Entwicklermodus auf Android (tippen Sie sieben Mal auf „Build-Nummer“)
- Aktivieren Sie das drahtlose Debugging
- Entwickleroptionen -> Drahtloses Debuggen
- Tippen Sie auf „Gerät mit Kopplungscode koppeln“
- Aktivieren Sie „In diesem Netzwerk immer zulassen“ und drücken Sie „Zulassen“, wenn Sie dazu aufgefordert werden.
- Von der Windows-CMD
- adb Startserver
- adb pair [ip]:[port] (aus dem Pairing-Dialog)
- [Pairing-Code]
- adb connect [ip]:[port] (vom drahtlosen Debugging-Bildschirm)
- Aktualisieren Sie Geräte in IDE
Android-App-Bundle-Format
Ermöglicht Google Play, das Anwendungswartungsmodell Dynamic Delivery zu verwenden, um optimierte APKs für jedes Gerät zu generieren.
- Projekt > Optionen > Erstellen > Delphi-Compiler > Kompilieren
- Android App Bundle-Datei generieren (arm + arm64)
Nach einer erfolgreichen App-Bundle-Generierung zeigt die IDE ein Dialogfeld an, das den .aab-Dateipfad enthält.
Hinweis: Sie können ein App Bundle nicht ausführen oder debuggen. Um die Anwendung zu debuggen, müssen Sie das .APK-Paketformat verwenden
Neues Android-Laufzeit-Berechtigungsmodell
- Eingeführt in Android 6.0 (API 23) Marshmallow
- Die Support-Bibliothek deckt frühere Android-Versionen ab
- Das neue Modell optimiert den automatischen Aktualisierungsprozess
- Berechtigungsgenehmigung wird bei der ersten Verwendung ausgelöst
- Anstatt alle Berechtigungen bei der Installation zu genehmigen
- Gibt Endbenutzern mehr Kontrolle über Berechtigungen
- Einzelne Berechtigungen können pro App zugelassen oder verweigert und später geändert werden
- Verwaltet durch neue Android-API-Methoden checkSelfPermission() & requestPermissions()
Weitere Informationen developer.android.com/training/permissions/requesting
Altes Genehmigungsdialogfeld
- Während der Installation werden alle Berechtigungen akzeptiert
- Der Benutzer kann einzelne Berechtigungen nicht verweigern
- Alle im Manifest veröffentlichten Berechtigungen
- Wenn sich die Berechtigungen ändern, müssen sie vor der Aktualisierung genehmigt werden
Neuer Genehmigungsdialog
- Wenn Sie die individuelle Berechtigung zum ersten Mal anfordern, hat der Benutzer die Möglichkeit, sie zu verweigern oder zuzulassen
- Wenn der Benutzer einmal ablehnt, kann der Benutzer verhindern, dass die App erneut fragt
- Es ist wichtig, wann und wie Sie fragen (dazu später mehr)
- Alle Berechtigungen sind weiterhin im Manifest veröffentlicht
Benutzer haben jetzt eine granulare Berechtigungskontrolle
Gefährlichvs.Normal Berechtigungen
- Der Benutzer wird nicht aufgefordertNormalBerechtigungen
- Beispiele: Internet, Vibration, Bluetooth usw.
- Der Benutzer muss zustimmenGefährlichBerechtigungen
- Typischerweise betreffen diese den Datenschutz oder potenzielle Kosten
- Sie sind in Berechtigungsgruppen gruppiert:
- Kalender, Anrufprotokoll, Kamera, Kontakte, Standort, Mikrofon, Telefon, Sensoren, SMS und Speicher
- Der Benutzer genehmigt eine ganze Gruppe
- Zum Beispiel sowohl das Senden als auch das Empfangen von SMS
- Der Entwickler muss weiterhin alle Berechtigungen vom Betriebssystem im Manifest deklarieren und anfordern.
Weitere Informationen developer.android.com/guide/topics/permissions/overview
Wie man um Erlaubnis bittet – Delphi
Weitere Informationen: docwiki.embarcadero.com/RADStudio/en/Android_Permission_Model
Der Genehmigungsdienst
- System.Permissions enthält eine Instanz von TPermissionsService namens PermissionsService oder greifen Sie über die DefaultService-Eigenschaft darauf zu
- IsPermissionGranted: Wenn der App derzeit eine Berechtigung erteilt wurde
- RequestPermissions: Fordern Sie bestimmte Berechtigungen und ihre Familie an
- IsEveryPermissionGranted: wenn aufgelistete Berechtigungen derzeit gewährt werden
- Neue relevante/verwandte Typen wurden zu den RTL-Android-Einheiten hinzugefügt
- Manifest.permission und Build.VERSION in Androidapi.JNI.Os.pas
- ContextCompat, ActivityCompat und PermissionChecker in Androidapi.JNI.Support.pas
IsPermissionGranted-Methode
- Mitglied von System.Permissions.TPermissionsService
- Funktion IsPermissionGranted (const APermission: string): Boolean;
- Finden Sie heraus, ob der App derzeit eine Berechtigung erteilt wurde
- Gehen Sie niemals davon aus, dass es noch gewährt wird
- Wenn kein Plattformberechtigungsdienst implementiert ist, um tatsächlich eine Überprüfung durchzuführen, antwortet er standardmäßig, dass alle Berechtigungen gewährt werden
IsEveryPermissionGranted-Methode
- docwiki:/RADStudio/Uses_Permissions
- docwiki:Libraries/System.Permissions.TPermissionsService.IsEveryPermissionGranted
- Mitglied von System.Permissions.TPermissionsService
- Funktion IsEveryPermissionGranted(const APermissions: TArray<string>): Boolean;
- Finden Sie heraus, ob alle aufgelisteten Berechtigungen derzeit erteilt sind
- Gehen Sie niemals davon aus, dass es noch gewährt wird
- Berechtigungszeichenfolgen gefunden in TJManifest_permission.JavaClass von Androidapi.JNI.Os
- Liste der Berechtigungen und Beschreibungen
RequestPermissions
- Mitglied von System.Permissions.TPermissionsService
- Prozedur RequestPermissions(
- const APermissions: TArray<string>;
- const AOnRequestPermissionsErgebnis:
- TRequestPermissionsResult[Event|Proc];
- AOnDisplayRationale: TDisplayRationale[Event|Proc] = nil);
- Fordern Sie eine oder mehrere Berechtigungen an
- Alle derzeit nicht erteilten Berechtigungen werden angefordert.
- Vorher kann dem Benutzer eine Begründung angezeigt werden, wenn eine Begründungskette für die fragliche Erlaubnis gesetzt wurde, die erneut eine Erlaubnis anfordert, die zuvor verweigert wurde, eine Begründungsanzeigeroutine wird durchlaufen
- docwiki:Libraries/System.Permissions.TPermissionsService.RequestPermissions
TRequestPermissionsResult[Ereignis|Proc]
- Rückruf von RequestPermissions
- TRequestPermissionsResult[Ereignis|Proc] =
- Prozedur (Sender: TObject;
- const APermissions: TArray<string>;
- const AGrantResults: TArray<TPermissionStatus>);
- Rückruftyp, wenn das System unsere Genehmigungsanfragen verarbeitet hat
- Für jede angeforderte Berechtigung in APermissions gibt es einen booleschen Wert in AGrantResults, der angibt, ob die Berechtigung erteilt wurde.
Wann nach Berechtigungen fragen
Wann fragen –KritischBerechtigungen
Wann fragen –SekundärBerechtigungen
Andere Best Practices
- Verwenden Sie die asynchrone Version von Methoden und Dialogen
- Blockieren Sie den UI-Thread NICHT!
- Verwenden Sie immer HTTPS (alles sollte sicher sein)
- Verwenden Sie die neuen HTTP-Client-Bibliotheken docwiki.embarcadero.com/RADStudio/en/Using_an_HTTP_Client
- Indy ist weiterhin verfügbar, wird aktualisiert und unterstützt
- Lernen Sie die Parallel Programming Library kennen
- Lernen Sie System.IOUtils und TPath kennen
- Lernen Sie ADB, logcat & Log.d kennen
Mehr Informationen
- Schreiben auf SD-Karte stackoverflow.com/a/57600189/255
- Holen Sie sich den Pfad der entfernbaren SD-Karte
- Androidapi.JNI.Os.pas
- getExternalStorageDirectory
- getExternalStoragePublicDirectory
- getExternalStorageState
- Androidapi.JNI.Os.pas
- Sehen Sie sich „Mobile Permissions Component for Android“ in GetIt an
Nächste Schritte
- Starten Sie eine Testversion von RAD Studio unter embarcadero.com/products/rad-studio/start-for-free
- Holen Sie sich die Community Edition unter embarcadero.com/products/delphi/starter
- Aktualisieren Sie noch heute! embarcadero.com/app-development-tools-store/rad-studio
- Siehe Sonderangebote embarcadero.com/radoffer
- Abonnieren Sie auf YouTube youtube.com/c/EmbarcaderoTechnologies
- Folgen Sie uns auf Twitter twitter.com/embarcaderotech
- Liken Sie uns auf Facebook facebook.com/embarcaderotech
- Folgen Sie uns auf LinkedIn linkedin.com/company/embarcadero-technologies
- Lesen Sie unseren Blog blogs.embarcadero.com
Führen Sie noch heute ein Upgrade auf Delphi 11 durch embarcadero.com/products/delphi
Android 11 ist aktuell führend ( Versionen 9 bis 11 machen 76,4 % aus) .
- Android 12 wurde am 4. Oktober 2021 veröffentlicht
- Android 11 wurde am 8. September 2020 veröffentlicht
- Android 10 wurde am 3. September 2019 veröffentlicht
- Android 9 wurde am 6. August 2018 veröffentlicht
- Android 12 = API 31
- Android 11 = API 30
- Android 10 = API 29
- Android 9 = API 28 (Kuchen)
https://gs.statcounter.com/android-version-market-share/mobile/worldwide/#monthly-202001-202201
Sicherheits- und Leistungsanforderungen für Android Play
- Jedes Jahr wird die targetSdkVersion-Anforderung erweitert. Innerhalb eines Jahres nach jedem Android
- Release müssen neue Apps und App-Updates auf die aktualisierte API-Ebene oder höher ausgerichtet sein.
- November 2021:
- Ziel-API-Ebene 30 (Android 11)
- Veröffentlichen Sie im Android App Bundle-Format.
- Erforderlich für die Google Play Console
- Weitere Änderungen finden Sie im Leitfaden zur API-Migration: developer.android.com/distribute/best-practices/develop/target-sdk
Android-Änderungen in Delphi 11
*** – link
docwiki.embarcadero.com/RADStudio/Alexandria/en/What%27s_New
Unterstützung für Android 12?
Aktualisieren bestehender Android-Projekte
● Öffnen Sie ein Android-Projekt, das mit einer älteren Version erstellt wurde.
● Navigieren Sie zum andockbaren Fenster Projekte.
● Wählen Sie Android 32-Bit als aktive Zielplattform aus.
● Klicken Sie mit der rechten Maustaste auf den Knoten Bibliotheken.
● Klicken Sie auf Systemdateien auf Standard zurücksetzen.
● Anpassen mit Bibliotheken von Drittanbietern usw.
● Wiederholen für Android-64.
Aktualisieren Ihrer Android-Tools
- Delphi installiert optional Android SDK 25.2.5 und Updates während der Installation
- Fügen Sie ADB zu Ihrem Pfad hinzu:
- C:UsersPublicDocumentsEmbarcaderoStudio22.0CatalogRepositoryAndroidSDK-2525-22.0.42600.6491platform-tools
- Fügen Sie SDKManager zu Ihrem Pfad hinzu:
- C:UsersPublicDocumentsEmbarcaderoStudio22.0CatalogRepositoryAndroidSDK-2525-22.0.42600.6491toolsbin
- Laufen:
- ADB-Kill-Server
- SDKManager —aktualisieren
- adb-Version
- Wenn Sie eine Fehlermeldung erhalten: „.android/repositories.cfg konnte nicht geladen werden.“
- Stellen Sie sicher, dass Sie einen .android-Ordner in Ihrem Benutzerverzeichnis haben
- Erstellen Sie eine leere repositories.cfg-Datei
- Neueste Version (ab Februar 2022)
- Android Debug Bridge-Version 1.0.41
- Version 32.0.0-8006631
Drahtloses Debugging
- Hinzugefügt in Android 11 (API 30)
- Wechseln Sie in den Entwicklermodus auf Android (tippen Sie sieben Mal auf „Build-Nummer“)
- Aktivieren Sie das drahtlose Debugging
- Entwickleroptionen -> Drahtloses Debuggen
- Tippen Sie auf „Gerät mit Kopplungscode koppeln“
- Aktivieren Sie „In diesem Netzwerk immer zulassen“ und drücken Sie „Zulassen“, wenn Sie dazu aufgefordert werden.
- Von der Windows-CMD
- adb Startserver
- adb pair [ip]:[port] (aus dem Pairing-Dialog)
- [Pairing-Code]
- adb connect [ip]:[port] (vom drahtlosen Debugging-Bildschirm)
- Aktualisieren Sie Geräte in IDE
Android-App-Bundle-Format
Ermöglicht Google Play, das Anwendungswartungsmodell Dynamic Delivery zu verwenden, um optimierte APKs für jedes Gerät zu generieren.
- Projekt > Optionen > Erstellen > Delphi-Compiler > Kompilieren
- Android App Bundle-Datei generieren (arm + arm64)
Nach einer erfolgreichen App-Bundle-Generierung zeigt die IDE ein Dialogfeld an, das den .aab-Dateipfad enthält.
Hinweis: Sie können ein App Bundle nicht ausführen oder debuggen. Um die Anwendung zu debuggen, müssen Sie das .APK-Paketformat verwenden
Neues Android-Laufzeit-Berechtigungsmodell
- Eingeführt in Android 6.0 (API 23) Marshmallow
- Die Support-Bibliothek deckt frühere Android-Versionen ab
- Das neue Modell optimiert den automatischen Aktualisierungsprozess
- Berechtigungsgenehmigung wird bei der ersten Verwendung ausgelöst
- Anstatt alle Berechtigungen bei der Installation zu genehmigen
- Gibt Endbenutzern mehr Kontrolle über Berechtigungen
- Einzelne Berechtigungen können pro App zugelassen oder verweigert und später geändert werden
- Verwaltet durch neue Android-API-Methoden checkSelfPermission() & requestPermissions()
Weitere Informationen developer.android.com/training/permissions/requesting
Altes Genehmigungsdialogfeld
- Während der Installation werden alle Berechtigungen akzeptiert
- Der Benutzer kann einzelne Berechtigungen nicht verweigern
- Alle im Manifest veröffentlichten Berechtigungen
- Wenn sich die Berechtigungen ändern, müssen sie vor der Aktualisierung genehmigt werden
Neuer Genehmigungsdialog
- Wenn Sie die individuelle Berechtigung zum ersten Mal anfordern, hat der Benutzer die Möglichkeit, sie zu verweigern oder zuzulassen
- Wenn der Benutzer einmal ablehnt, kann der Benutzer verhindern, dass die App erneut fragt
- Es ist wichtig, wann und wie Sie fragen (dazu später mehr)
- Alle Berechtigungen sind weiterhin im Manifest veröffentlicht
Benutzer haben jetzt eine granulare Berechtigungskontrolle
Gefährlichvs.Normal Berechtigungen
- Der Benutzer wird nicht aufgefordertNormalBerechtigungen
- Beispiele: Internet, Vibration, Bluetooth usw.
- Der Benutzer muss zustimmenGefährlichBerechtigungen
- Typischerweise betreffen diese den Datenschutz oder potenzielle Kosten
- Sie sind in Berechtigungsgruppen gruppiert:
- Kalender, Anrufprotokoll, Kamera, Kontakte, Standort, Mikrofon, Telefon, Sensoren, SMS und Speicher
- Der Benutzer genehmigt eine ganze Gruppe
- Zum Beispiel sowohl das Senden als auch das Empfangen von SMS
- Der Entwickler muss weiterhin alle Berechtigungen vom Betriebssystem im Manifest deklarieren und anfordern.
Weitere Informationen developer.android.com/guide/topics/permissions/overview
Wie man um Erlaubnis bittet – Delphi
Weitere Informationen: docwiki.embarcadero.com/RADStudio/en/Android_Permission_Model
Der Genehmigungsdienst
- System.Permissions enthält eine Instanz von TPermissionsService namens PermissionsService oder greifen Sie über die DefaultService-Eigenschaft darauf zu
- IsPermissionGranted: Wenn der App derzeit eine Berechtigung erteilt wurde
- RequestPermissions: Fordern Sie bestimmte Berechtigungen und ihre Familie an
- IsEveryPermissionGranted: wenn aufgelistete Berechtigungen derzeit gewährt werden
- Neue relevante/verwandte Typen wurden zu den RTL-Android-Einheiten hinzugefügt
- Manifest.permission und Build.VERSION in Androidapi.JNI.Os.pas
- ContextCompat, ActivityCompat und PermissionChecker in Androidapi.JNI.Support.pas
IsPermissionGranted-Methode
- Mitglied von System.Permissions.TPermissionsService
- Funktion IsPermissionGranted (const APermission: string): Boolean;
- Finden Sie heraus, ob der App derzeit eine Berechtigung erteilt wurde
- Gehen Sie niemals davon aus, dass es noch gewährt wird
- Wenn kein Plattformberechtigungsdienst implementiert ist, um tatsächlich eine Überprüfung durchzuführen, antwortet er standardmäßig, dass alle Berechtigungen gewährt werden
IsEveryPermissionGranted-Methode
- docwiki:/RADStudio/Uses_Permissions
- docwiki:Libraries/System.Permissions.TPermissionsService.IsEveryPermissionGranted
- Mitglied von System.Permissions.TPermissionsService
- Funktion IsEveryPermissionGranted(const APermissions: TArray<string>): Boolean;
- Finden Sie heraus, ob alle aufgelisteten Berechtigungen derzeit erteilt sind
- Gehen Sie niemals davon aus, dass es noch gewährt wird
- Berechtigungszeichenfolgen gefunden in TJManifest_permission.JavaClass von Androidapi.JNI.Os
- Liste der Berechtigungen und Beschreibungen
RequestPermissions
- Mitglied von System.Permissions.TPermissionsService
- Prozedur RequestPermissions(
- const APermissions: TArray<string>;
- const AOnRequestPermissionsErgebnis:
- TRequestPermissionsResult[Event|Proc];
- AOnDisplayRationale: TDisplayRationale[Event|Proc] = nil);
- Fordern Sie eine oder mehrere Berechtigungen an
- Alle derzeit nicht erteilten Berechtigungen werden angefordert.
- Vorher kann dem Benutzer eine Begründung angezeigt werden, wenn eine Begründungskette für die fragliche Erlaubnis gesetzt wurde, die erneut eine Erlaubnis anfordert, die zuvor verweigert wurde, eine Begründungsanzeigeroutine wird durchlaufen
- docwiki:Libraries/System.Permissions.TPermissionsService.RequestPermissions
TRequestPermissionsResult[Ereignis|Proc]
- Rückruf von RequestPermissions
- TRequestPermissionsResult[Ereignis|Proc] =
- Prozedur (Sender: TObject;
- const APermissions: TArray<string>;
- const AGrantResults: TArray<TPermissionStatus>);
- Rückruftyp, wenn das System unsere Genehmigungsanfragen verarbeitet hat
- Für jede angeforderte Berechtigung in APermissions gibt es einen booleschen Wert in AGrantResults, der angibt, ob die Berechtigung erteilt wurde.
Wann nach Berechtigungen fragen
Wann fragen –KritischBerechtigungen
Wann fragen –SekundärBerechtigungen
Andere Best Practices
- Verwenden Sie die asynchrone Version von Methoden und Dialogen
- Blockieren Sie den UI-Thread NICHT!
- Verwenden Sie immer HTTPS (alles sollte sicher sein)
- Verwenden Sie die neuen HTTP-Client-Bibliotheken docwiki.embarcadero.com/RADStudio/en/Using_an_HTTP_Client
- Indy ist weiterhin verfügbar, wird aktualisiert und unterstützt
- Lernen Sie die Parallel Programming Library kennen
- Lernen Sie System.IOUtils und TPath kennen
- Lernen Sie ADB, logcat & Log.d kennen
Mehr Informationen
- Schreiben auf SD-Karte stackoverflow.com/a/57600189/255
- Holen Sie sich den Pfad der entfernbaren SD-Karte
- Androidapi.JNI.Os.pas
- getExternalStorageDirectory
- getExternalStoragePublicDirectory
- getExternalStorageState
- Androidapi.JNI.Os.pas
- Sehen Sie sich „Mobile Permissions Component for Android“ in GetIt an
Nächste Schritte
- Starten Sie eine Testversion von RAD Studio unter embarcadero.com/products/rad-studio/start-for-free
- Holen Sie sich die Community Edition unter embarcadero.com/products/delphi/starter
- Aktualisieren Sie noch heute! embarcadero.com/app-development-tools-store/rad-studio
- Siehe Sonderangebote embarcadero.com/radoffer
- Abonnieren Sie auf YouTube youtube.com/c/EmbarcaderoTechnologies
- Folgen Sie uns auf Twitter twitter.com/embarcaderotech
- Liken Sie uns auf Facebook facebook.com/embarcaderotech
- Folgen Sie uns auf LinkedIn linkedin.com/company/embarcadero-technologies
- Lesen Sie unseren Blog blogs.embarcadero.com
Führen Sie noch heute ein Upgrade auf Delphi 11 durch embarcadero.com/products/delphi
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition