APIs unter Android 6.0

Android 6.0 (M) bietet neue Funktionen für Nutzer und App-Entwickler. In diesem Dokument werden die wichtigsten APIs vorgestellt.

Hier geht es los

Wenn Sie mit der Entwicklung von Apps für Android 6.0 beginnen möchten, müssen Sie zuerst das Android SDK herunterladen. Laden Sie dann mit dem SDK Manager das Android 6.0 SDK und die System-Images herunter.

Ziel-API-Level aktualisieren

Um Ihre App besser für Geräte mit Android zu optimieren, legen Sie targetSdkVersion auf "23" fest, installieren Sie Ihre App auf einem Android-Systemimage, testen Sie sie und veröffentlichen Sie dann die aktualisierte App mit dieser Änderung.

Sie können Android-APIs verwenden und gleichzeitig ältere Versionen unterstützen, indem Sie Ihrem Code Bedingungen hinzufügen, die das System-API-Level prüfen, bevor APIs ausgeführt werden, die von Ihrem minSdkVersion nicht unterstützt werden. Weitere Informationen zur Abwärtskompatibilität finden Sie unter Unterstützung verschiedener Plattformversionen.

Weitere Informationen zur Funktionsweise von API-Levels finden Sie unter Was ist ein API-Level?

Fingerabdruckauthentifizierung

Mit diesem Release werden neue APIs eingeführt, mit denen Sie Nutzer mithilfe von Fingerabdruckscans auf unterstützten Geräten authentifizieren können. Verwenden Sie diese APIs in Verbindung mit dem Android Keystore-System.

Wenn Sie Nutzer per Fingerabdruckscan authentifizieren möchten, rufen Sie eine Instanz der neuen Klasse FingerprintManager ab und rufen Sie die Methode authenticate() auf. Ihre App muss auf einem kompatiblen Gerät mit einem Fingerabdrucksensor ausgeführt werden. Sie müssen die Benutzeroberfläche für den Fingerabdruck-Authentifizierungsablauf in Ihrer App implementieren und das standardmäßige Android-Fingerabdrucksymbol in Ihrer Benutzeroberfläche verwenden. Das Android-Fingerabdrucksymbol (c_fp_40px.png) ist im Beispiel für die biometrische Authentifizierung enthalten. Wenn Sie mehrere Apps entwickeln, die die Fingerabdruckauthentifizierung verwenden, muss jede App den Fingerabdruck des Nutzers unabhängig authentifizieren.

Wenn Sie diese Funktion in Ihrer App verwenden möchten, müssen Sie zuerst die Berechtigung USE_FINGERPRINT in Ihrem Manifest hinzufügen.

<uses-permission
        android:name="android.permission.USE_FINGERPRINT" />
Auf einem Smartphone ist die Fingerabdruckauthentifizierung zu sehen.

Ein Beispiel für die Implementierung der Fingerabdruckauthentifizierung in einer App finden Sie im Biometric Authentication sample. Ein Beispiel für die Verwendung dieser Authentifizierungs-APIs in Verbindung mit anderen Android-APIs finden Sie im Video Fingerprint and Payment APIs.

Wenn Sie diese Funktion testen, gehen Sie so vor:

  1. Installieren Sie die Android SDK-Tools Revision 24.3, falls noch nicht geschehen.
  2. Registrieren Sie einen neuen Fingerabdruck im Emulator unter Einstellungen > Sicherheit > Fingerabdruck und folgen Sie der Anleitung.
  3. Verwenden Sie einen Emulator, um Fingerabdruck-Touch-Ereignisse mit dem folgenden Befehl zu emulieren. Mit demselben Befehl können Sie Fingerabdruck-Touch-Ereignisse auf dem Sperrbildschirm oder in Ihrer App emulieren.
    adb -e emu finger touch <finger_id>
    

    Unter Windows müssen Sie möglicherweise telnet 127.0.0.1 <emulator-id> und dann finger touch <finger_id> ausführen.

Anmeldedaten bestätigen

Ihre App kann Nutzer basierend darauf authentifizieren, wie lange es her ist, dass sie ihr Gerät zuletzt entsperrt haben. Mit dieser Funktion müssen sich Nutzer keine zusätzlichen app-spezifischen Passwörter merken und Sie müssen keine eigene Authentifizierungs-Benutzeroberfläche implementieren. Ihre App sollte diese Funktion in Verbindung mit der Implementierung eines öffentlichen oder geheimen Schlüssels für die Nutzerauthentifizierung verwenden.

Wenn Sie das Zeitlimit festlegen möchten, für das derselbe Schlüssel nach erfolgreicher Authentifizierung eines Nutzers wiederverwendet werden kann, rufen Sie die neue Methode setUserAuthenticationValidityDurationSeconds() auf, wenn Sie ein KeyGenerator oder KeyPairGenerator einrichten.

Vermeiden Sie es, das Dialogfeld zur erneuten Authentifizierung zu oft einzublenden. Ihre Apps sollten zuerst versuchen, das kryptografische Objekt zu verwenden. Wenn das Zeitlimit abläuft, sollten Sie die Methode createConfirmDeviceCredentialIntent() verwenden, um den Nutzer in Ihrer App neu zu authentifizieren.

App-Verknüpfung

Mit dieser Version wird das Intent-System von Android durch leistungsstärkere App-Links verbessert. Mit dieser Funktion können Sie eine App mit einer Webdomain verknüpfen, die Ihnen gehört. Anhand dieser Verknüpfung kann die Plattform die Standard-App ermitteln, die zum Verarbeiten eines bestimmten Weblinks verwendet werden soll. Nutzer werden dann nicht mehr aufgefordert, eine App auszuwählen. Weitere Informationen zum Implementieren dieser Funktion

Automatische Sicherung für Apps

Das System führt jetzt automatische vollständige Datensicherungen und ‑wiederherstellungen für Apps durch. Ihre App muss auf Android 6.0 (API-Level 23) ausgerichtet sein, damit dieses Verhalten aktiviert wird. Sie müssen keinen zusätzlichen Code hinzufügen. Wenn Nutzer ihre Google-Konten löschen, werden auch ihre Sicherungsdaten gelöscht. Informationen zur Funktionsweise dieses Features und zur Konfiguration der zu sichernden Elemente im Dateisystem finden Sie unter Automatische Sicherung für Apps konfigurieren.

Direkt teilen

Unterer Teil eines Smartphones, auf dem die Funktion „Direkt teilen“ angezeigt wird

Mit diesem Release erhalten Sie APIs, mit denen Sie das Teilen für Nutzer intuitiv und schnell gestalten können. Sie können jetzt Ziele für das direkte Teilen definieren, mit denen eine bestimmte Aktivität in Ihrer App gestartet wird. Diese Ziele für das direkte Teilen werden Nutzern über das Menü Teilen angezeigt. Mit dieser Funktion können Nutzer Inhalte in anderen Apps für Ziele wie Kontakte freigeben. Das Ziel für die Direktfreigabe kann beispielsweise eine Aktivität in einer anderen Social-Media-App starten, über die der Nutzer Inhalte direkt für einen bestimmten Freund oder eine bestimmte Community in dieser App freigeben kann.

Wenn Sie Direct Share-Ziele aktivieren möchten, müssen Sie eine Klasse definieren, die die Klasse ChooserTargetService erweitert. Dienst im Manifest deklarieren Geben Sie in dieser Deklaration die Berechtigung BIND_CHOOSER_TARGET_SERVICE und einen Intent-Filter mit der Aktion SERVICE_INTERFACE an.

Das folgende Beispiel zeigt, wie Sie die ChooserTargetService in Ihrem Manifest deklarieren können.

<service android:name=".ChooserTargetService"
        android:label="@string/service_name"
        android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE">
    <intent-filter>
        <action android:name="android.service.chooser.ChooserTargetService" />
    </intent-filter>
</service>

Fügen Sie für jede Aktivität, die Sie für ChooserTargetService verfügbar machen möchten, ein <meta-data>-Element mit dem Namen "android.service.chooser.chooser_target_service" in das App-Manifest ein.

<activity android:name=".MyShareActivity”
        android:label="@string/share_activity_label">
    <intent-filter>
        <action android:name="android.intent.action.SEND" />
    </intent-filter>
<meta-data
        android:name="android.service.chooser.chooser_target_service"
        android:value=".ChooserTargetService" />
</activity>

Sprachinteraktionen

Mit dieser Version wird eine neue API für die Sprachinteraktion eingeführt, mit der Sie in Kombination mit Sprachaktionen Sprachsteuerungen in Ihre Apps einbauen können. Rufen Sie die Methode isVoiceInteraction() auf, um festzustellen, ob eine Sprachaktion Ihre Aktivität ausgelöst hat. Wenn ja, kann Ihre App die Klasse VoiceInteractor verwenden, um eine Sprachbestätigung vom Nutzer anzufordern, aus einer Liste von Optionen auszuwählen und vieles mehr.

Die meisten Sprachinteraktionen werden durch eine Sprachaktion des Nutzers ausgelöst. Eine Sprachinteraktionsaktivität kann jedoch auch ohne Nutzereingabe gestartet werden. Beispielsweise kann eine andere App, die über eine Sprachinteraktion gestartet wurde, auch einen Intent zum Starten einer Sprachinteraktion senden. Rufen Sie die Methode isVoiceInteractionRoot() auf, um festzustellen, ob Ihre Aktivität über eine Sprachanfrage des Nutzers oder über eine andere Sprachinteraktions-App gestartet wurde. Wenn eine andere App Ihre Aktivität gestartet hat, gibt die Methode false zurück. Ihre App kann den Nutzer dann auffordern, zu bestätigen, dass er diese Aktion beabsichtigt hat.

Weitere Informationen zum Implementieren von Sprachaktionen finden Sie auf der Entwicklerwebsite für Sprachaktionen.

Assist API

Mit dieser Version können Nutzer auf neue Weise über einen Assistenten mit Ihren Apps interagieren. Damit der Nutzer diese Funktion verwenden kann, muss er dem Assistenten erlauben, den aktuellen Kontext zu verwenden. Nach der Aktivierung kann der Nutzer den Assistenten in jeder App aufrufen, indem er die Home-Schaltfläche lange gedrückt hält.

Ihre App kann den aktuellen Kontext nicht mit dem Assistenten teilen, indem sie das Flag FLAG_SECURE festlegt. Zusätzlich zu den Standardinformationen, die die Plattform an den Assistenten übergibt, kann Ihre App mit der neuen Klasse AssistContent zusätzliche Informationen weitergeben.

So stellen Sie dem Assistenten zusätzlichen Kontext aus Ihrer App zur Verfügung:

  1. Implementieren Sie die Application.OnProvideAssistDataListener-Schnittstelle.
  2. Registrieren Sie diesen Listener mit registerOnProvideAssistDataListener().
  3. Um aktivitätsspezifische Kontextinformationen bereitzustellen, überschreiben Sie den onProvideAssistData()-Callback und optional den neuen onProvideAssistContent()-Callback.

Geräte mit verwendbarem Speicher

Mit dieser Version können Nutzer externe Speichergeräte wie SD-Karten übernehmen. Wenn Sie ein externes Speichergerät verwenden, wird es verschlüsselt und formatiert, sodass es sich wie ein interner Speicher verhält. Mit dieser Funktion können Nutzer sowohl Apps als auch private Daten dieser Apps zwischen Speichermedien verschieben. Beim Verschieben von Apps berücksichtigt das System die android:installLocation-Einstellung im Manifest.

Wenn Ihre App auf die folgenden APIs oder Felder zugreift, beachten Sie, dass sich die von ihnen zurückgegebenen Dateipfade dynamisch ändern, wenn die App zwischen internen und externen Speichermedien verschoben wird. Beim Erstellen von Dateipfaden wird dringend empfohlen, diese APIs immer dynamisch aufzurufen. Verwenden Sie keine fest codierten Dateipfade und speichern Sie keine voll qualifizierten Dateipfade, die zuvor erstellt wurden.

Wenn Sie diese Funktion debuggen möchten, können Sie die Übernahme eines USB-Laufwerks aktivieren, das über ein USB-OTG-Kabel mit einem Android-Gerät verbunden ist. Führen Sie dazu den folgenden Befehl aus:

$ adb shell sm set-force-adoptable true

Benachrichtigungen

In dieser Version wurden die folgenden API-Änderungen für Benachrichtigungen hinzugefügt:

Unterstützung für Bluetooth-Eingabestifte

In diesem Release wurde die Unterstützung für die Nutzereingabe über einen Bluetooth-Stift verbessert. Nutzer können einen kompatiblen Bluetooth-Stift mit ihrem Smartphone oder Tablet koppeln und verbinden. Wenn der Stift verbunden ist, werden Positionsinformationen vom Touchscreen mit Druck- und Tastendaten vom Stift kombiniert, um einen größeren Ausdrucksbereich als mit dem Touchscreen allein zu ermöglichen. Ihre App kann auf das Drücken der Stift-Taste reagieren und sekundäre Aktionen ausführen, indem sie View.OnContextClickListener- und GestureDetector.OnContextClickListener-Objekte in Ihrer Aktivität registriert.

Verwenden Sie die MotionEvent-Methoden und ‑Konstanten, um Interaktionen mit der Stift-Schaltfläche zu erkennen:

Verbesserte Bluetooth Low Energy-Suche

Wenn Ihre App Bluetooth Low Energy-Scans durchführt, verwenden Sie die neue Methode setCallbackType(), um anzugeben, dass das System Callbacks benachrichtigen soll, wenn es zum ersten Mal oder nach langer Zeit ein Werbepaket findet, das dem festgelegten ScanFilter entspricht. Diese Art des Scannens ist energieeffizienter als in der vorherigen Plattformversion.

Unterstützung für Hotspot 2.0 Release 1

In dieser Version wird die Hotspot 2.0 Release 1-Spezifikation auf Nexus 6- und Nexus 9-Geräten unterstützt. Verwenden Sie zum Bereitstellen von Hotspot 2.0-Anmeldedaten in Ihrer App die neuen Methoden der Klasse WifiEnterpriseConfig, z. B. setPlmn() und setRealm(). Im WifiConfiguration-Objekt können Sie die Felder FQDN und providerFriendlyName festlegen. Die neue Methode isPasspointNetwork() gibt an, ob ein erkanntes Netzwerk einen Hotspot 2.0-Zugangspunkt darstellt.

4K-Anzeigemodus

Auf der Plattform können Apps jetzt anfordern, dass die Displayauflösung auf kompatibler Hardware auf 4K-Rendering hochgestuft wird. Verwenden Sie die neuen Display.Mode-APIs, um die aktuelle physische Auflösung abzufragen. Wenn die Benutzeroberfläche mit einer niedrigeren logischen Auflösung gerendert und auf eine höhere physische Auflösung hochskaliert wird, kann die physische Auflösung, die von der Methode getPhysicalWidth() zurückgegeben wird, von der logischen Auflösung abweichen, die von getSize() gemeldet wird.

Sie können das System auffordern, die physische Auflösung in Ihrer App während der Ausführung zu ändern, indem Sie die preferredDisplayModeId-Eigenschaft des Fensters Ihrer App festlegen. Diese Funktion ist nützlich, wenn Sie zur 4K-Auflösung wechseln möchten. Im 4K-Anzeigemodus wird die Benutzeroberfläche weiterhin in der ursprünglichen Auflösung (z. B. 1080p) gerendert und auf 4K hochskaliert. SurfaceView-Objekte können jedoch Inhalte in der nativen Auflösung anzeigen.

ColorStateLists mit Design

Designattribute werden jetzt in ColorStateList für Geräte mit Android 6.0 (API‑Level 23) unterstützt. Die Methoden Resources.getColorStateList() und Resources.getColor() wurden eingestellt. Wenn Sie diese APIs aufrufen, verwenden Sie stattdessen die neuen Methoden Context.getColorStateList() oder Context.getColor(). Diese Methoden sind auch in der v4-AppCompat-Bibliothek über ContextCompat verfügbar.

Audiofunktionen

Diese Version enthält Verbesserungen bei der Audioverarbeitung auf Android, darunter:

  • Unterstützung des MIDI-Protokolls mit den neuen android.media.midi-APIs. Mit diesen APIs können Sie MIDI-Ereignisse senden und empfangen.
  • Neue AudioRecord.Builder- und AudioTrack.Builder-Klassen zum Erstellen von Objekten für die digitale Audioaufnahme und ‑wiedergabe sowie zum Konfigurieren von Audioquellen- und ‑senkenattributen, um die Systemstandardeinstellungen zu überschreiben.
  • API-Hooks zum Verknüpfen von Audio- und Eingabegeräten. Das ist besonders nützlich, wenn Nutzer in Ihrer App eine Sprachsuche über einen mit Android TV verbundenen Controller oder eine Fernbedienung starten können. Das System ruft den neuen onSearchRequested()-Callback auf, wenn der Nutzer eine Suche startet. Um festzustellen, ob das Eingabegerät des Nutzers ein integriertes Mikrofon hat, rufen Sie das InputDevice-Objekt aus diesem Callback ab und rufen Sie dann die neue hasMicrophone()-Methode auf.
  • Neue getDevices()-Methode, mit der Sie eine Liste aller Audiogeräte abrufen können, die derzeit mit dem System verbunden sind. Sie können auch ein AudioDeviceCallback-Objekt registrieren, wenn das System Ihre App benachrichtigen soll, wenn ein Audiogerät verbunden oder getrennt wird.

Videofunktionen

In dieser Version wurden den APIs zur Videoverarbeitung neue Funktionen hinzugefügt, darunter:

  • Neue MediaSync-Klasse, mit der Anwendungen Audio- und Videostreams synchron rendern können. Die Audio-Puffer werden nicht blockierend übergeben und über einen Callback zurückgegeben. Außerdem wird die dynamische Wiedergabegeschwindigkeit unterstützt.
  • Neues EVENT_SESSION_RECLAIMED-Ereignis, das angibt, dass eine von der App geöffnete Sitzung vom Ressourcenmanager zurückgefordert wurde. Wenn Ihre App DRM-Sitzungen verwendet, sollten Sie dieses Ereignis verarbeiten und darauf achten, keine zurückgewonnene Sitzung zu verwenden.
  • Neuer Fehlercode ERROR_RECLAIMED, der angibt, dass der Ressourcenmanager die vom Codec verwendete Media-Ressource zurückgefordert hat. In diesem Fall muss der Codec freigegeben werden, da er sich im Endzustand befindet.
  • Neue getMaxSupportedInstances()-Schnittstelle, um einen Hinweis zur maximalen Anzahl der unterstützten gleichzeitigen Codec-Instanzen zu erhalten.
  • Neue setPlaybackParams()-Methode zum Festlegen der Media-Wiedergabegeschwindigkeit für die Wiedergabe in Zeitlupe oder Zeitraffer. Außerdem wird die Audiowiedergabe automatisch in Verbindung mit dem Video gedehnt oder beschleunigt.

Kamerafunktionen

Diese Version enthält die folgenden neuen APIs für den Zugriff auf die Taschenlampe der Kamera und für die Neubearbeitung von Bildern durch die Kamera:

Flashlight API

Wenn ein Kameragerät einen Blitz hat, können Sie die Methode setTorchMode() aufrufen, um den Taschenlampenmodus des Blitzes ein- oder auszuschalten, ohne das Kameragerät zu öffnen. Die App hat kein ausschließliches Eigentum an der Blitzeinheit oder dem Kameragerät. Der Taschenlampenmodus wird deaktiviert und ist nicht mehr verfügbar, wenn das Kameragerät nicht mehr verfügbar ist oder wenn andere Kameraressourcen, die die Taschenlampe eingeschaltet halten, nicht mehr verfügbar sind. Andere Apps können auch setTorchMode() aufrufen, um den Taschenlampenmodus zu deaktivieren. Wenn die letzte App, die den Taschenlampenmodus aktiviert hat, geschlossen wird, wird der Taschenlampenmodus deaktiviert.

Sie können einen Callback registrieren, um über den Status des Taschenlampenmodus benachrichtigt zu werden. Rufen Sie dazu die Methode registerTorchCallback() auf. Wenn der Callback zum ersten Mal registriert wird, wird er sofort mit dem Status des Taschenlampenmodus aller derzeit bekannten Kamerageräte mit Blitz aufgerufen. Wenn der Taschenlampenmodus erfolgreich aktiviert oder deaktiviert wurde, wird die Methode onTorchModeChanged() aufgerufen.

Reprocessing API

Die Camera2 API wurde erweitert, um die Neubearbeitung von Bildern im YUV- und privaten undurchsichtigen Format zu unterstützen. Rufen Sie getCameraCharacteristics() auf und prüfen Sie, ob der Schlüssel REPROCESS_MAX_CAPTURE_STALL vorhanden ist, um festzustellen, ob diese Funktionen zur erneuten Verarbeitung verfügbar sind. Wenn ein Gerät die Neuverarbeitung unterstützt, können Sie eine neu verarbeitbare Kameraaufnahmesitzung erstellen, indem Sie createReprocessableCaptureSession() aufrufen und Anfragen für die Neuverarbeitung von Eingabepuffern erstellen.

Verwenden Sie die Klasse ImageWriter, um den Input-Pufferfluss mit dem Reprocessing-Input der Kamera zu verbinden. So erhalten Sie einen leeren Puffer:

  1. Rufen Sie die Methode dequeueInputImage() auf.
  2. Füllen Sie den Eingabepuffer mit den Daten.
  3. Senden Sie den Puffer an die Kamera, indem Sie die Methode queueInputImage() aufrufen.

Wenn Sie ein ImageWriter-Objekt zusammen mit einem PRIVATE-Bild verwenden, kann Ihre App nicht direkt auf die Bilddaten zugreifen. Übergeben Sie stattdessen das PRIVATE-Bild direkt an ImageWriter, indem Sie die queueInputImage()-Methode ohne Pufferkopie aufrufen.

Die Klasse ImageReader unterstützt jetzt Bildstreams im PRIVATE-Format. Durch diese Unterstützung kann Ihre App eine zirkuläre Bildwarteschlange mit ImageReader Ausgabebildern verwalten, ein oder mehrere Bilder auswählen und sie zur Neubearbeitung durch die Kamera an ImageWriter senden.

Android for Work-Funktionen

Diese Version enthält die folgenden neuen APIs für Android for Work:

  • Erweiterte Steuerelemente für unternehmenseigene, zweckgebundene Geräte:Der Geräteeigentümer kann jetzt die folgenden Einstellungen steuern, um die Verwaltung von unternehmenseigenen, zweckgebundenen Geräten (Corporate-Owned, Single-Use, COSU) zu verbessern:
    • Deaktivieren oder reaktivieren Sie den Keyguard mit der Methode setKeyguardDisabled().
    • Mit der Methode setStatusBarDisabled() können Sie die Statusleiste (einschließlich der Schnelleinstellungen, Benachrichtigungen und der Aufwärtswischgeste für die Navigation, mit der Google Now gestartet wird) deaktivieren oder wieder aktivieren.
    • Sie können den abgesicherten Start mit der Konstanten UserManagerDISALLOW_SAFE_BOOT deaktivieren oder wieder aktivieren.
    • Verhindere, dass sich das Display ausschaltet, wenn das Gerät über die Konstante STAY_ON_WHILE_PLUGGED_IN angeschlossen ist.
  • Stille Installation und Deinstallation von Apps durch den Geräteinhaber:Ein Geräteinhaber kann jetzt Anwendungen mithilfe der PackageInstaller-APIs unabhängig von Google Play for Work still installieren und deinstallieren. Sie können Geräte jetzt über einen Geräteinhaber bereitstellen, der Apps ohne Nutzerinteraktion abruft und installiert. Diese Funktion ist nützlich, um die Bereitstellung von Kiosken oder ähnlichen Geräten mit nur einem Tastendruck zu ermöglichen, ohne ein Google-Konto zu aktivieren.
  • Stiller Zugriff auf Unternehmenszertifikate : Wenn eine App choosePrivateKeyAlias() aufruft, bevor der Nutzer aufgefordert wird, ein Zertifikat auszuwählen, kann der Profil- oder Geräteinhaber jetzt die Methode onChoosePrivateKeyAlias() aufrufen, um den Alias still an die anfragende Anwendung zu übergeben. Mit dieser Funktion können Sie verwalteten Apps Zugriff auf Zertifikate gewähren, ohne dass Nutzerinteraktion erforderlich ist.
  • Automatische Annahme von Systemupdates: Durch Festlegen einer Richtlinie für Systemupdates mit setSystemUpdatePolicy() kann ein Geräteinhaber jetzt ein Systemupdate automatisch akzeptieren, z. B. bei einem Kioskgerät, oder das Update verschieben und verhindern, dass es vom Nutzer bis zu 30 Tage lang ausgeführt wird. Außerdem kann ein Administrator ein tägliches Zeitfenster festlegen, in dem ein Update durchgeführt werden muss, z. B. während der Stunden, in denen ein Kioskgerät nicht verwendet wird. Wenn ein Systemupdate verfügbar ist, prüft das System, ob die App des Gerätepolicy-Controllers eine Systemupdate-Richtlinie festgelegt hat, und verhält sich entsprechend.
  • Delegierte Zertifikatsinstallation:Ein Profil- oder Geräteinhaber kann einer Drittanbieter-App jetzt die Möglichkeit geben, diese DevicePolicyManager-Zertifikatsverwaltungs-APIs aufzurufen:
  • Smartphone mit der Benachrichtigungsfunktion für den Arbeitsstatus in Android for Work
  • Tracking der Datennutzung: Ein Profil- oder Geräteinhaber kann jetzt mit den neuen NetworkStatsManager-Methoden die in Einstellungen > Datennutzung sichtbaren Statistiken zur Datennutzung abfragen. Profilinhabern wird automatisch die Berechtigung erteilt, Daten für das von ihnen verwaltete Profil abzufragen. Geräteinhaber erhalten Zugriff auf Nutzungsdaten des verwalteten Hauptnutzers.
  • Verwaltung von Laufzeitberechtigungen:

    Ein Profil- oder Geräteinhaber kann eine Berechtigungsrichtlinie für alle Laufzeitanfragen aller Anwendungen festlegen, die setPermissionPolicy() verwenden. Der Nutzer wird dann entweder aufgefordert, die Berechtigung zu erteilen, oder die Berechtigung wird automatisch im Hintergrund erteilt oder abgelehnt. Wenn die letztere Richtlinie festgelegt ist, kann der Nutzer die vom Profil- oder Geräteinhaber getroffene Auswahl auf dem Bildschirm mit den App-Berechtigungen in den Einstellungen nicht ändern.

  • VPN in den Einstellungen:VPN-Apps sind jetzt unter Einstellungen > Mehr > VPN sichtbar. Außerdem sind die Benachrichtigungen, die mit der VPN-Nutzung einhergehen, jetzt spezifisch für die Konfiguration des jeweiligen VPN. Beim Profilinhaber hängen die Benachrichtigungen davon ab, ob das VPN für ein verwaltetes Profil, ein privates Profil oder beides konfiguriert ist. Für einen Geräteinhaber hängen die Benachrichtigungen davon ab, ob das VPN für das gesamte Gerät konfiguriert ist.
  • Benachrichtigung zum Arbeitsstatus:In der Statusleiste wird jetzt ein Aktentaschensymbol angezeigt, wenn eine App aus dem verwalteten Profil im Vordergrund aktiv ist. Wenn das Gerät direkt durch die Aktivität einer App im verwalteten Profil entsperrt wird, wird außerdem ein Hinweis-Toast angezeigt, der den Nutzer darüber informiert, dass er sich im Arbeitsprofil befindet.