Android 10 (API-Level 29) führt eine Reihe von Funktionen und Verhaltensänderungen ein, um den Datenschutz der Nutzer zu verbessern. Diese Änderungen erweitern die Transparenz und Kontrolle, die Nutzer über ihre Daten haben, und die Möglichkeiten, die sie Apps geben. Diese Funktionen können dazu führen, dass sich bestimmte Verhaltensweisen oder Daten, auf die sich Ihre App verlässt, im Vergleich zu älteren Versionen der Plattform anders verhalten. Die Auswirkungen auf Ihre App sollten minimal sein, wenn Ihre App die aktuellen Best Practices für den Umgang mit Nutzerdaten befolgt.
Auf dieser Seite finden Sie eine Zusammenfassung der einzelnen Änderungen.
Wichtigste Änderungen
In diesem Abschnitt werden die wichtigsten Änderungen in Android 10 im Zusammenhang mit dem Datenschutz beschrieben.
Zugriff auf externen Speicher auf App-Dateien und ‑Medien beschränkt
Standardmäßig erhalten Apps, die auf Android 10 und höher ausgerichtet sind, eingeschränkten Zugriff auf den externen Speicher, auch begrenzter Speicher genannt. Solche Apps können die folgenden Dateitypen auf einem externen Speichergerät sehen, ohne dass sie speicherbezogene Nutzer berechtigungen anfordern müssen:
- Dateien im app-spezifischen Verzeichnis, auf die mit
getExternalFilesDir()zugegriffen wird. - Fotos, Videos und Audioclips, die die App aus dem Medien speicher erstellt hat.
Weitere Informationen zum begrenzten Speicher sowie zum Freigeben, Zugreifen und Ändern von Dateien, die auf externen Speichergeräten gespeichert sind, finden Sie in den Leitfäden zum Verwalten von Dateien im externen Speicher und zum Zugreifen auf und Ändern von Mediendateien.
Zugriff auf den Gerätestandort im Hintergrund erfordert Berechtigung
Um die zusätzliche Kontrolle zu unterstützen, die Nutzer über den Zugriff einer App auf
Standortinformationen haben, führt Android 10 die
ACCESS_BACKGROUND_LOCATION
Berechtigung ein.
Im Gegensatz zu den
ACCESS_FINE_LOCATION
und
ACCESS_COARSE_LOCATION
Berechtigungen wirkt sich die ACCESS_BACKGROUND_LOCATION Berechtigung nur auf den
Zugriff einer App auf den Standort aus, wenn sie im Hintergrund ausgeführt wird. Eine App greift auf den Standort im Hintergrund zu, es sei denn, eine der folgenden Bedingungen ist erfüllt:
- Eine Aktivität der App ist sichtbar.
Die App führt einen Dienst im Vordergrund aus, der den Vordergrund Diensttyp
locationdeklariert hat.Wenn Sie den Diensttyp im Vordergrund für einen Dienst in Ihrer App deklarieren möchten, legen Sie Ihre App
targetSdkVersionodercompileSdkVersionauf29oder höher fest. Weitere Informationen dazu, wie Dienste im Vordergrund nutzerinitiierte Aktionen fortsetzen können, für die Zugriff auf den Standort erforderlich ist
Wenn Ihre App Geofences erstellt und überwacht und
auf Android 10 (API-Level 29) oder höher ausgerichtet ist, müssen Sie die
ACCESS_BACKGROUND_LOCATION Berechtigung deklarieren.
Zugriff automatisch gewährt, wenn auf Android 9 oder niedriger ausgerichtet
Wenn Ihre App unter Android 10 oder höher ausgeführt wird, aber auf Android 9 (API-Level 28) oder niedriger ausgerichtet ist, wendet die Plattform das folgende Verhalten an:
- Wenn Ihre App ein
<uses-permission>Element fürACCESS_FINE_LOCATIONoderACCESS_COARSE_LOCATION, deklariert, fügt das System während der Installation automatisch ein<uses-permission>Element fürACCESS_BACKGROUND_LOCATIONhinzu. - Wenn Ihre App entweder
ACCESS_FINE_LOCATIONoderACCESS_COARSE_LOCATIONanfordert, fügt das System der Anfrage automatischACCESS_BACKGROUND_LOCATIONhinzu.
Zugriff, wenn Gerät auf Android 10 aktualisiert wird
Wenn ein Nutzer Ihrer App Zugriff auf den Gerätestandort gewährt – entweder
ACCESS_COARSE_LOCATION
oder
ACCESS_FINE_LOCATION
– und dann sein Gerät von Android 9 auf Android 10 aktualisiert,
aktualisiert das System automatisch die Gruppe der standortbezogenen Berechtigungen, die Ihrer App gewährt wurden. Die Gruppe der Berechtigungen, die Ihre App nach dem Upgrade erhält,
hängt von der Ziel-SDK-Version und den definierten Berechtigungen ab, wie in
der folgenden Tabelle dargestellt:
Tabelle 1 Änderungen am Status der Berechtigung zur Standortermittlung nach dem Upgrade des Geräts auf Android 10
| Zielplattformversion | Berechtigung zur Ermittlung des groben oder genauen Standorts gewährt? |
Berechtigung zur Standortermittlung im Hintergrund im Manifest definiert? |
Aktualisierter Standardberechtigungsstatus |
|---|---|---|---|
| Android 10 | Ja | Ja | Vordergrund- und Hintergrundzugriff |
| Android 10 | Ja | Nein | Nur Vordergrundzugriff |
| Android 10 | Nein | (Vom System ignoriert) | Kein Zugriff |
| Android 9 oder niedriger | Ja | Wird vom System automatisch beim Upgrade des Geräts hinzugefügt | Vordergrund- und Hintergrundzugriff |
| Android 9 oder niedriger | Nein | (Vom System ignoriert) | Kein Zugriff |
Beachten Sie, dass der Nutzer diese Zugriffsebene auch ändern kann, nachdem das System den Zugriff Ihrer App auf den Gerätestandort automatisch aktualisiert hat. Der Nutzer kann beispielsweise den Zugriff Ihrer App auf den Vordergrund beschränken oder den Zugriff vollständig widerrufen. Bevor Sie versuchen, auf den Standort des Geräts zuzugreifen, insbesondere in einem Dienst im Vordergrund, sollte Ihre App prüfen, ob der Nutzer Ihrer App weiterhin erlaubt, diese Standortinformationen zu erhalten.
Zugriff widerrufen, wenn Ziel-API-Level auf Android 10-Geräten aktualisiert wird
Angenommen, Ihre App ist bereits auf einem Gerät mit
Android 10 installiert. Wenn Sie Ihre App in dieser Situation auf
Android 10 aktualisieren, widerruft das Gerät die
ACCESS_BACKGROUND_LOCATION Berechtigung.
Weitere Informationen zum Abrufen des Gerätestandorts, während Ihre App im Hintergrund ausgeführt wird, finden Sie im Leitfaden zum Empfangen regelmäßiger Standort updates.
Einschränkungen beim Starten von Aktivitäten im Hintergrund
Ab Android 10 schränkt das System das Starten von Aktivitäten im Hintergrund ein. Diese Verhaltens änderung trägt dazu bei, Unterbrechungen für den Nutzer zu minimieren und ihm mehr Kontrolle darüber zu geben, was auf seinem Bildschirm angezeigt wird. Solange Ihre App Aktivitäten als direkte Folge der Nutzerinteraktion startet, ist sie höchstwahrscheinlich nicht von diesen Einschränkungen betroffen.
Weitere Informationen zur empfohlenen Alternative zum Starten von Aktivitäten im Hintergrund finden Sie im Leitfaden zum Benachrichtigen von Nutzern über zeitkritische Ereignisse in Ihrer App.
Kennungen und Daten
In diesem Abschnitt werden Änderungen aufgeführt, die speziell für die Arbeit mit Gerätekennungen und ‑daten gelten.
Entfernung der Kontaktaffinität
Ab Android 10 werden keine Informationen zur Kontaktaffinität mehr erfasst. Wenn Ihre App also eine Suche in den Kontakten des Nutzers durchführt, werden die Ergebnisse nicht nach der Häufigkeit der Interaktion sortiert.
Der Leitfaden zu ContactsProvider enthält einen Hinweis, in dem die spezifischen
Felder und Methoden beschrieben werden, die
veraltet ab Android 10 auf allen Geräten
sind.
MAC-Adressen-Randomisierung
Auf Geräten mit Android 10 oder höher werden standardmäßig zufällige MAC-Adressen übertragen.
Wenn Ihre App einen geschäftlichen Anwendungsfall abdeckt, bietet die Plattform APIs für verschiedene Vorgänge im Zusammenhang mit MAC-Adressen:
- Zufällige MAC-Adresse abrufen: Apps für Geräteeigentümer und Apps für Profilinhaber
können die zufällige MAC-Adresse abrufen, die einem bestimmten Netzwerk zugewiesen ist, indem sie
aufrufen
getRandomizedMacAddress(). - Tatsächliche MAC-Adresse abrufen: Apps für Geräteeigentümer können die
tatsächliche Hardware-MAC-Adresse eines Geräts abrufen, indem sie
getWifiMacAddress()aufrufen. Diese Methode ist nützlich, um Geräteflotten zu verfolgen.
Einschränkung des Zugriffs auf das Dateisystem /proc/net
Auf Geräten mit Android 10 oder höher können Apps nicht auf
/proc/net zugreifen, das Informationen zum Netzwerkstatus eines Geräts enthält. Apps
, die Zugriff auf diese Informationen benötigen, z. B. VPNs, sollten die
NetworkStatsManager oder
ConnectivityManager Klasse verwenden.
Einschränkung für nicht zurücksetzbare Gerätekennungen
Ab Android 10 benötigen Apps die
READ_PRIVILEGED_PHONE_STATE privilegierte Berechtigung, um auf die
nicht zurücksetzbaren Kennungen des Geräts zuzugreifen, zu denen sowohl die IMEI als auch die Seriennummer gehören.
Betroffene Methoden sind unter anderem:
BuildTelephonyManager
Wenn Ihre App nicht über die Berechtigung verfügt und Sie trotzdem Informationen zu nicht zurücksetzbaren Kennungen anfordern, variiert die Antwort der Plattform je nach Ziel-SDK-Version:
- Wenn Ihre App auf Android 10 oder höher ausgerichtet ist, tritt ein
SecurityExceptionauf. - Wenn Ihre App auf Android 9 (API-Level 28) oder niedriger ausgerichtet ist, gibt die Methode
nulloder Platzhalterdaten zurück, wenn die App dieREAD_PHONE_STATEBerechtigung hat. Andernfalls tritt einSecurityExceptionauf.
Für viele Anwendungsfälle sind keine nicht zurücksetzbaren Gerätekennungen erforderlich. Wenn Ihre App beispielsweise nicht zurücksetzbare Gerätekennungen für das Anzeigen-Tracking oder die Nutzeranalyse verwendet, verwenden Sie stattdessen eine Android-Werbe-ID für diese spezifischen Anwendungsfälle. Weitere Informationen finden Sie unter Best Practices für eindeutige Kennungen.
Eingeschränkter Zugriff auf Daten in der Zwischenablage
Sofern Ihre App nicht der Standard-IME (Input Method Editor) oder die App ist, die derzeit den Fokus hat, kann Ihre App unter Android 10 oder höher nicht auf Daten in der Zwischenablage zugreifen.
Schutz der Seriennummer des USB-Geräts
Wenn Ihre App auf Android 10 oder höher ausgerichtet ist, kann sie die Seriennummer erst lesen, wenn der Nutzer Ihrer App die Berechtigung zum Zugriff auf das USB-Gerät oder ‑Zubehör gewährt hat.
Kamera und Konnektivität
In diesem Abschnitt werden Änderungen aufgeführt, die speziell für Kamerametadaten und Konnektivitäts-APIs gelten.
Einschränkung des Zugriffs auf Kameradetails und ‑metadaten
Android 10 ändert den Umfang der Informationen, die die
getCameraCharacteristics()
Methode standardmäßig zurückgibt. Insbesondere muss Ihre App die
CAMERA Berechtigung haben, um
auf potenziell gerätespezifische Metadaten zuzugreifen, die im
Rückgabewert dieser Methode enthalten sind.
Weitere Informationen zu diesen Änderungen finden Sie im Abschnitt zu Kamerafeldern, für die eine Berechtigung erforderlich ist.
Einschränkung beim Aktivieren und Deaktivieren von WLAN
Apps, die auf Android 10 oder höher ausgerichtet sind, können WLAN nicht aktivieren oder deaktivieren. Die
WifiManager.setWifiEnabled()
Methode gibt immer false zurück.
Wenn Sie Nutzer auffordern müssen, WLAN zu aktivieren und zu deaktivieren, verwenden Sie ein Einstellungs feld.
Einschränkungen beim direkten Zugriff auf konfigurierte WLANs
Zum Schutz der Privatsphäre der Nutzer ist die manuelle Konfiguration der Liste der WLANs auf System-Apps und Device Policy Controller (DPCs)beschränkt. Ein bestimmter DPC kann entweder der Geräteeigentümer oder der Profilinhaber sein.
Wenn Ihre App auf Android 10 oder höher ausgerichtet ist und keine System App oder kein DPC ist, geben die folgenden Methoden keine nützlichen Daten zurück:
Die
getConfiguredNetworks()Methode gibt immer eine leere Liste zurück.Jede Methode für Netzwerkoperationen, die einen ganzzahligen Wert—
addNetwork()undupdateNetwork()—zurückgibt, gibt immer -1 zurück.Jede Methode für Netzwerkoperationen, die einen booleschen Wert zurückgibt (
removeNetwork(),reassociate(),enableNetwork(),disableNetwork(),reconnect()unddisconnect()), gibt immerfalsezurück.
Wenn Ihre App eine Verbindung zu WLANs herstellen muss, verwenden Sie die folgenden alternativen Methoden:
- Verwenden Sie
WifiNetworkSpecifierin einem StandardobjektNetworkRequest, um eine sofortige lokale Verbindung zu einem WLAN herzustellen. - Wenn Sie WLANs hinzufügen möchten, die für den Internetzugriff für den
Nutzer in Betracht gezogen werden sollen, verwenden Sie
WifiNetworkSuggestionObjekte. Sie können Netzwerke, die im Dialogfeld zur automatischen Auswahl von Netzwerken angezeigt werden, mitaddNetworkSuggestions()bzw.removeNetworkSuggestions()hinzufügen und entfernen. Für diese Methoden sind keine Berechtigungen zur Standortermittlung erforderlich.
Für einige Telefonie-, Bluetooth- und WLAN-APIs ist die Berechtigung zur Ermittlung des genauen Standorts erforderlich
Wenn Ihre App auf Android 10 oder höher ausgerichtet ist, muss sie die
ACCESS_FINE_LOCATION
Berechtigung haben, um mehrere Methoden in den WLAN-, Wi-Fi Aware-
oder Bluetooth-APIs verwenden zu können. In den folgenden Abschnitten werden die betroffenen Klassen und Methoden aufgeführt.
Telefonie
TelephonyManagergetCellLocation()getAllCellInfo()requestNetworkScan()requestCellInfoUpdate()getAvailableNetworks()getServiceState()
TelephonyScanManagerrequestNetworkScan()
TelephonyScanManager.NetworkScanCallbackonResults()
PhoneStateListeneronCellLocationChanged()onCellInfoChanged()onServiceStateChanged()
WLAN
WifiManagerstartScan()getScanResults()getConnectionInfo()getConfiguredNetworks()
WifiAwareManagerWifiP2pManagerWifiRttManager
Bluetooth
BluetoothAdapterstartDiscovery()startLeScan()
BluetoothAdapter.LeScanCallbackBluetoothLeScannerstartScan()
Berechtigungen
In diesem Abschnitt werden Updates am Android-Berechtigungsmodell beschrieben.
Eingeschränkter Zugriff auf Bildschirminhalte
Zum Schutz der Bildschirminhalte der Nutzer verhindert Android 10 den stillen
Zugriff auf die Bildschirminhalte des Geräts, indem der Umfang der
READ_FRAME_BUFFER, CAPTURE_VIDEO_OUTPUT, und CAPTURE_SECURE_VIDEO_OUTPUT
Berechtigungen geändert wird. Ab Android 10 ist der Zugriff auf diese Berechtigungen nur mit
Signatur
möglich.
Apps, die auf die Bildschirminhalte des Geräts zugreifen müssen, sollten die
MediaProjection
API verwenden, die eine Aufforderung anzeigt, in der der Nutzer um seine Einwilligung gebeten wird.
Nutzerseitige Berechtigungsprüfung für ältere Apps
Wenn Ihre App auf Android 5.1 (API-Level 22) oder niedriger ausgerichtet ist, sehen Nutzer beim ersten Verwenden Ihrer App auf einem Gerät mit Android 10 oder höher einen Berechtigungs bildschirm, wie in Abbildung 1 dargestellt. Auf diesem Bildschirm können Nutzer die Möglichkeit nutzen, den Zugriff auf Berechtigungen zu widerrufen, die das System Ihrer App zuvor bei der Installation gewährt hat.
Erkennung körperlicher Aktivitäten
Android 10 führt die
android.permission.ACTIVITY_RECOGNITION
Laufzeitberechtigung für Apps ein, die die Schrittzahl des Nutzers erkennen oder
die körperliche Aktivität des Nutzers klassifizieren müssen, z. B. Gehen, Radfahren oder Fahren in einem
Fahrzeug. So können Nutzer in den Einstellungen sehen, wie Gerätesensordaten verwendet
werden.
Einige Bibliotheken in den Google Play-Diensten, z. B. die Activity Recognition API und die Google Fit API, liefern nur dann Ergebnisse, wenn der Nutzer Ihrer App diese Berechtigung gewährt hat.
Die einzigen integrierten Sensoren auf dem Gerät, für die Sie diese Berechtigung deklarieren müssen, sind der Schritt zähler und Schritt detektor sensoren.
Wenn Ihre App auf Android 9 (API-Level 28) oder niedriger ausgerichtet ist, gewährt das System Ihrer App bei Bedarf automatisch
die android.permission.ACTIVITY_RECOGNITION Berechtigung,
wenn Ihre App alle folgenden Bedingungen erfüllt:
- Die Manifestdatei enthält die
com.google.android.gms.permission.ACTIVITY_RECOGNITIONBerechtigung. - Die Manifestdatei enthält nicht die
android.permission.ACTIVITY_RECOGNITIONBerechtigung.
Wenn das System die android.permission.ACTIVITY_RECOGNITION
Berechtigung automatisch gewährt, behält Ihre App die Berechtigung bei, nachdem Sie Ihre App auf
Android 10 aktualisiert haben. Der Nutzer kann diese Berechtigung jedoch jederzeit in den Systemeinstellungen widerrufen.
Berechtigungsgruppen aus der Benutzeroberfläche entfernt
Ab Android 10 können Apps nicht mehr nachschlagen, wie Berechtigungen gruppiert in der Benutzeroberfläche sind.