APIs unter Android 6.0

Android 6.0 (M) bietet neue Funktionen für Nutzer und App-Entwickler. Dieses Dokument bietet eine Einführung in die wichtigsten APIs.

Hier gehts los

Wenn Sie Apps für Android 6.0 erstellen möchten, müssen Sie zuerst das Android SDK herunterladen. Laden Sie dann mithilfe des SDK-Managers die Android 6.0 SDK-Plattform und die Systemimages herunter.

Ziel-API-Level aktualisieren

Wenn du deine App besser für Geräte mit Android optimieren möchtest, setze targetSdkVersion auf "23", installiere deine App auf einem Android-System-Image, teste sie und veröffentliche die aktualisierte App mit dieser Änderung.

Sie können Android APIs verwenden und gleichzeitig ältere Versionen unterstützen. Fügen Sie Ihrem Code dazu Bedingungen hinzu, die das System-API-Level prüfen, bevor APIs ausgeführt werden, die von Ihrem minSdkVersion nicht unterstützt werden. Weitere Informationen zur Aufrechterhaltung der 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?

Authentifizierung per Fingerabdruck

Dieser Release bietet neue APIs, mit denen Sie Nutzer mithilfe ihrer Fingerabdruckscans auf unterstützten Geräten authentifizieren können. Verwenden Sie diese APIs zusammen mit dem Android-Schlüsselspeichersystem.

Um Nutzer über den Fingerabdruckscan zu authentifizieren, rufen Sie eine Instanz der neuen FingerprintManager-Klasse ab und rufen Sie die Methode authenticate() auf. Ihre App muss auf einem kompatiblen Gerät mit Fingerabdrucksensor ausgeführt werden. Du musst die Benutzeroberfläche für den Vorgang zur Authentifizierung per Fingerabdruck in deiner App implementieren und das standardmäßige Android-Fingerabdrucksymbol in deiner Benutzeroberfläche verwenden. Das Android-Fingerabdrucksymbol (c_fp_40px.png) ist im Beispiel für die biometrische Authentifizierung enthalten. Wenn Sie mehrere Anwendungen mit Fingerabdruckauthentifizierung entwickeln, beachten Sie, dass jede Anwendung den Fingerabdruck des Nutzers unabhängig authentifizieren muss.

Wenn du diese Funktion in deiner App verwenden möchtest, füge zuerst deinem Manifest die Berechtigung USE_FINGERPRINT hinzu.

<uses-permission
        android:name="android.permission.USE_FINGERPRINT" />
Smartphone mit Fingerabdruckauthentifizierung

Eine App-Implementierung der Fingerabdruckauthentifizierung finden Sie im Beispiel zur biometrischen Authentifizierung. Ein Beispiel dafür, wie du diese Authentifizierungs-APIs in Verbindung mit anderen Android-APIs verwenden kannst, findest du im Video Fingerprint and Payment APIs.

Wenn Sie diese Funktion testen, gehen Sie so vor:

  1. Installiere die Android SDK Tools Revision 24.3, wenn du dies noch nicht getan hast.
  2. Registrieren Sie einen neuen Fingerabdruck im Emulator. Gehen Sie dazu zu Einstellungen > Sicherheit > Fingerabdruck und folgen Sie der Anleitung zur Registrierung.
  3. Verwenden Sie einen Emulator, um Touch-Ereignisse für Fingerabdrücke mit dem folgenden Befehl zu emulieren. Verwenden Sie denselben Befehl, um Touch-Ereignisse für Fingerabdrücke auf dem Sperrbildschirm oder in Ihrer App zu emulieren.
    adb -e emu finger touch <finger_id>
    

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

Anmeldedaten bestätigen

Nutzer können in Ihrer App basierend auf dem Zeitpunkt der letzten Entsperrung ihres Geräts authentifiziert werden. So müssen sich Nutzer keine zusätzlichen anwendungsspezifischen Passwörter merken und es ist nicht erforderlich, eine eigene Benutzeroberfläche für die Authentifizierung zu implementieren. Ihre Anwendung sollte diese Funktion in Verbindung mit einer 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 der erfolgreichen Authentifizierung eines Nutzers wiederverwendet werden kann, rufen Sie beim Einrichten von KeyGenerator oder KeyPairGenerator die neue Methode setUserAuthenticationValidityDurationSeconds() auf.

Vermeiden Sie es, das Dialogfeld zur erneuten Authentifizierung zu oft anzuzeigen. Ihre Anwendungen sollten zuerst versuchen, das kryptografische Objekt zu verwenden. Wenn das Zeitlimit abläuft, nutzen Sie die Methode createConfirmDeviceCredentialIntent(), um den Nutzer innerhalb Ihrer App noch einmal zu authentifizieren.

App-Verknüpfung

Mit dieser Version wird das Intent-System von Android durch leistungsstärkere App-Verknüpfungen optimiert. Mit dieser Funktion können Sie eine App mit einer Webdomain verknüpfen, deren Inhaber Sie sind. Anhand dieser Verknüpfung kann die Plattform bestimmen, welche Standard-App für einen bestimmten Weblink verwendet werden soll, und Nutzer nicht zur Auswahl einer App auffordern. Informationen zur Implementierung dieser Funktion finden Sie unter Umgang mit App-Links.

Automatische Sicherung für Apps

Das System führt jetzt eine automatische vollständige Datensicherung und -wiederherstellung für Apps durch. Deine App muss auf Android 6.0 (API-Level 23) ausgerichtet sein, um dieses Verhalten zu ermöglichen. Du musst keinen zusätzlichen Code hinzufügen. Wenn ein Nutzer sein Google-Konto löscht, werden auch die Sicherungsdaten gelöscht. Informationen zur Funktionsweise dieses Features und zur Konfiguration der zu sichernden Daten im Dateisystem finden Sie unter Automatische Sicherung für Apps konfigurieren.

Direkter Anteil

Unterer Teil eines Mobilgeräts mit Direct Share-Funktion

In dieser Version stehen APIs zur Verfügung, die eine intuitive und schnelle Freigabe für Nutzer ermöglichen. Sie können jetzt Ziele für den direkten Anteil definieren, die eine bestimmte Aktivität in Ihrer App starten. Diese Ziele zum direkten Teilen sind für Nutzer über das Menü Teilen sichtbar. Mit dieser Funktion können Nutzer Inhalte mit Zielen wie Kontakten innerhalb anderer Apps teilen. Beispielsweise könnte das Ziel für das direkte Teilen eine Aktivität in einer anderen App eines sozialen Netzwerks starten, sodass der Nutzer Inhalte direkt mit einem bestimmten Freund oder einer bestimmten Community in dieser App teilen kann.

Zum Aktivieren von direkten Freigabezielen müssen Sie eine Klasse definieren, die die Klasse ChooserTargetService erweitert. Ihren Dienst im Manifest deklarieren Geben Sie in dieser Deklaration die Berechtigung BIND_CHOOSER_TARGET_SERVICE und einen Intent-Filter mithilfe der Aktion SERVICE_INTERFACE an.

Das folgende Beispiel zeigt, wie du ChooserTargetService in deinem Manifest deklarieren kannst.

<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üge in deinem App-Manifest für jede Aktivität, die für ChooserTargetService sichtbar sein soll, ein <meta-data>-Element mit dem Namen "android.service.chooser.chooser_target_service" hinzu.

<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

Dieser Release stellt eine neue API zur Sprachinteraktion zur Verfügung, mit der Sie in Kombination mit Sprachbedienung dialogorientierte Sprachfunktionen in Ihre Anwendungen einbinden können. Rufen Sie die Methode isVoiceInteraction() auf, um zu ermitteln, ob Ihre Aktivität durch eine Sprachbedienung ausgelöst wurde. In diesem Fall kann Ihre Anwendung die Klasse VoiceInteractor verwenden, um unter anderem eine Sprachbestätigung vom Nutzer anzufordern, Optionen aus einer Liste auszuwählen und mehr.

Die meisten Interaktionen erfolgen über die Sprachbedienung. Eine Sprachinteraktion kann jedoch auch ohne Nutzereingabe beginnen. Beispielsweise kann eine andere App, die über eine Sprachinteraktion gestartet wird, ebenfalls einen Intent zum Starten einer Sprachinteraktion senden. Wenn Sie feststellen möchten, ob Ihre Aktivität über eine Sprachanfrage eines Nutzers oder eine andere App zur Sprachinteraktion gestartet wurde, rufen Sie die Methode isVoiceInteractionRoot() auf. 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 Sprachbedienung finden Sie auf der Entwicklerwebsite für die Sprachbedienung.

Assist API

Diese Version bietet Nutzern eine neue Möglichkeit, über einen Assistenten mit deinen Apps zu interagieren. Um diese Funktion zu verwenden, muss der Nutzer Assistant erlauben, den aktuellen Kontext zu verwenden. Nach der Aktivierung kann der Nutzer Assistant in jeder App durch langes Drücken der Startbildschirmtaste aufrufen.

Ihre App kann entscheiden, den aktuellen Kontext nicht mit dem Assistenten zu teilen, indem Sie das Flag FLAG_SECURE setzen. Zusätzlich zu den Standardinformationen, die die Plattform an den Assistenten weitergibt, kann deine App mithilfe der neuen AssistContent-Klasse weitere Informationen teilen.

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. Wenn du aktivitätsspezifische Kontextinformationen bereitstellen möchtest, musst du den onProvideAssistData()-Callback und optional den neuen onProvideAssistContent()-Callback überschreiben.

Verwendbare Speichergeräte

Mit dieser Version können Nutzer externe Speichergeräte wie SD-Karten verwenden. Bei Verwendung eines externen Speichergeräts wird das Gerät 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 Speichergeräten 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, ändern sich die von ihnen zurückgegebenen Dateipfade dynamisch, wenn die App zwischen internen und externen Speichergeräten verschoben wird. Beim Erstellen von Dateipfaden wird dringend empfohlen, diese APIs immer dynamisch aufzurufen. Verwenden Sie keine hartcodierten Dateipfade und behalten Sie keine voll qualifizierten Dateipfade bei, die zuvor erstellt wurden.

Zum Debuggen dieser Funktion können Sie die Übernahme eines USB-Speichers aktivieren, der über ein USB-On-the-Go-Kabel (OTG) mit einem Android-Gerät verbunden ist. Dazu führen Sie den folgenden Befehl aus:

$ adb shell sm set-force-adoptable true

Benachrichtigungen

In diesem Release werden die folgenden API-Änderungen für Benachrichtigungen hinzugefügt:

Unterstützung für Bluetooth-Eingabestifte

Diese Version bietet eine verbesserte Unterstützung für die Nutzereingabe über einen Bluetooth-Eingabestift. Nutzer können einen kompatiblen Bluetooth-Eingabestift mit ihrem Smartphone oder Tablet koppeln und verbinden. Während die Verbindung besteht, werden Positionsinformationen vom Touchscreen mit Druck- und Tasteninformationen des Eingabestifts zusammengeführt, um einen größeren Ausdruck zu bieten als mit dem Touchscreen allein. Ihre App kann auf das Drücken von Eingabestifttasten warten und sekundäre Aktionen ausführen. Dazu registriert sie View.OnContextClickListener- und GestureDetector.OnContextClickListener-Objekte in Ihrer Aktivität.

Verwenden Sie die Methoden und Konstanten MotionEvent, um Interaktionen mit Eingabestifttasten zu erkennen:

  • Wenn der Nutzer einen Eingabestift mit einer Taste auf dem Bildschirm deiner App berührt, gibt die getTooltype()-Methode TOOL_TYPE_STYLUS zurück.
  • Für Apps, die auf Android 6.0 (API-Level 23) ausgerichtet sind, gibt die Methode getButtonState() BUTTON_STYLUS_PRIMARY zurück, wenn der Nutzer die Taste für den primären Eingabestift drückt. Wenn der Eingabestift eine zweite Taste hat, gibt dieselbe Methode BUTTON_STYLUS_SECONDARY zurück, wenn der Nutzer darauf drückt. Wenn der Nutzer beide Schaltflächen gleichzeitig drückt, gibt die Methode beide Werte in ODER miteinander zurück (BUTTON_STYLUS_PRIMARY|BUTTON_STYLUS_SECONDARY).
  • Für Apps, die auf eine niedrigere Plattformversion ausgerichtet sind, wird über die Methode getButtonState() BUTTON_SECONDARY (beim Drücken der Haupttaste für den Eingabestift), BUTTON_TERTIARY (beim Drücken der zweiten Eingabestifttaste) oder beides zurückgegeben.

Verbesserte Bluetooth Low Energy-Suche

Wenn deine App Bluetooth Low Energy-Scans ausführt, kannst du mit der neuen Methode setCallbackType() angeben, dass das System Callbacks benachrichtigen soll, wenn es zum ersten Mal ein Werbepaket, das dem festgelegten ScanFilter entspricht, findet oder nach längerer Zeit sieht. Dieser Ansatz des Scannens ist energieeffizienter als der, der in der vorherigen Plattformversion angeboten wurde.

Support für Hotspot 2.0 Version 1

Diese Version unterstützt die Hotspot 2.0 Release 1-Spezifikation auf Nexus 6- und Nexus 9-Geräten. Verwenden Sie zum Bereitstellen von Hotspot 2.0-Anmeldedaten in Ihrer App die neuen Methoden der WifiEnterpriseConfig-Klasse, 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 ein Upgrade der Bildschirmauflösung auf 4K-Rendering auf kompatibler Hardware anfordern. Verwenden Sie die neuen Display.Mode APIs, um die aktuelle physische Auflösung abzufragen. Wenn die UI mit einer niedrigeren logischen Auflösung gezeichnet und auf eine größere physische Auflösung hochskaliert wird, kann die von der Methode getPhysicalWidth() zurückgegebene physische Auflösung 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. Dazu legen Sie das Attribut preferredDisplayModeId des App-Fensters fest. Diese Funktion ist nützlich, wenn Sie zur 4K-Bildschirmauflösung wechseln möchten. Im 4K-Anzeigemodus wird die UI weiterhin in der ursprünglichen Auflösung (z. B. 1080p) gerendert und auf 4K hochskaliert. SurfaceView-Objekte zeigen Inhalte jedoch möglicherweise in der nativen Auflösung an.

Designbare „ColorStateLists“

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 verworfen. Wenn Sie diese APIs aufrufen, rufen Sie stattdessen die neue Methode Context.getColorStateList() oder Context.getColor() auf. Diese Methoden sind auch in der Appcompat-Bibliothek von Version 4 über ContextCompat verfügbar.

Audiofunktionen

Dieser Release umfasst Verbesserungen der Audioverarbeitung unter Android, darunter:

  • Unterstützung für das MIDI-Protokoll mit den neuen android.media.midi APIs. Mit diesen APIs können Sie MIDI-Ereignisse senden und empfangen.
  • Mit den neuen Klassen AudioRecord.Builder und AudioTrack.Builder lassen sich sowohl digitale Audioaufnahme- bzw. Wiedergabeobjekte erstellen als auch Eigenschaften von Audioquellen und -senken konfigurieren, um die Systemstandardwerte zu überschreiben.
  • API-Hooks zum Verknüpfen von Audio- und Eingabegeräten Das ist besonders nützlich, wenn Nutzer in Ihrer App über einen mit Android TV verbundenen Gamecontroller oder eine mit Android TV verbundene Fernbedienung eine Sprachsuche 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 von diesem Callback ab und rufen Sie dann die neue hasMicrophone()-Methode auf.
  • Mit der neuen Methode getDevices() können Sie eine Liste aller Audiogeräte abrufen, die derzeit mit dem System verbunden sind. Sie können auch ein AudioDeviceCallback-Objekt registrieren, wenn Sie möchten, dass das System Ihre App benachrichtigt, wenn ein Audiogerät eine Verbindung hergestellt oder getrennt hat.

Videofunktionen

In dieser Version werden die APIs zur Videoverarbeitung um folgende neue Funktionen erweitert:

  • Neue MediaSync-Klasse, mit der Anwendungen Audio- und Videostreams synchron rendern können. Die Audiozwischenspeicher werden nicht blockierend gesendet und über einen Callback zurückgegeben. Außerdem wird die dynamische Wiedergaberate unterstützt.
  • Neues EVENT_SESSION_RECLAIMED-Ereignis, das darauf hinweist, dass eine von der Anwendung geöffnete Sitzung vom Ressourcenmanager freigegeben wurde. Wenn Ihre App DRM-Sitzungen verwendet, sollten Sie dieses Ereignis verarbeiten und keine reaktivierte Sitzung verwenden.
  • Neuer ERROR_RECLAIMED-Fehlercode, der darauf hinweist, dass der Ressourcenmanager die vom Codec verwendete Medienressource wiederhergestellt hat. Mit dieser Ausnahme muss der Codec freigegeben werden, da er in den Endzustand versetzt wurde.
  • Neue getMaxSupportedInstances()-Schnittstelle, um einen Hinweis auf die maximale Anzahl gleichzeitig unterstützter Codec-Instanzen zu erhalten.
  • Neue setPlaybackParams()-Methode zum Festlegen der Medienwiedergabegeschwindigkeit für schnelle oder Zeitlupe. Außerdem wird die Audiowiedergabe neben dem Video automatisch 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 erneute Verarbeitung von Bildern durch die Kamera:

Taschenlampen-API

Verfügt eine Kamera über eine Blitzeinheit, kannst du die Methode setTorchMode() aufrufen, um den Taschenlampenmodus der Einheit ein- oder auszuschalten, ohne die Kamera zu öffnen. Die App ist nicht der alleinige Eigentümer des Blitzgeräts oder der Kamera. Der Taschenlampenmodus wird deaktiviert und ist nicht mehr verfügbar, wenn die Kamera nicht mehr verfügbar ist oder wenn andere Kameraressourcen, die die Taschenlampe eingeschaltet lassen, nicht mehr verfügbar sind. Andere Apps können auch setTorchMode() aufrufen, um den Taschenlampenmodus zu deaktivieren. Wenn der Taschenlampenmodus zuletzt in der App aktiviert wurde, wird er deaktiviert.

Durch Aufrufen der Methode registerTorchCallback() können Sie einen Callback registrieren, um über den Status des Taschenmodus informiert zu werden. Wenn der Callback zum ersten Mal registriert wird, wird er sofort mit dem Taschenmodusstatus aller derzeit bekannten Kamerageräte mit Blitzgerät aufgerufen. Wenn der Torch-Modus erfolgreich aktiviert oder deaktiviert wurde, wird die Methode onTorchModeChanged() aufgerufen.

API für die erneute Verarbeitung

Die Camera2 API wurde erweitert, um YUV-Bilder und die erneute Verarbeitung von Bildern im privaten undurchsichtigen Format zu unterstützen. Wenn Sie feststellen möchten, ob diese Funktionen zur erneuten Verarbeitung verfügbar sind, rufen Sie getCameraCharacteristics() auf und suchen Sie nach dem Schlüssel REPROCESS_MAX_CAPTURE_STALL. Wenn ein Gerät die erneute Verarbeitung unterstützt, können Sie eine wiederverarbeitbare Kameraaufnahmesitzung erstellen, indem Sie createReprocessableCaptureSession() aufrufen und Anfragen für die Neuverarbeitung von Eingabepuffern erstellen.

Verwenden Sie die Klasse ImageWriter, um den Eingabepufferfluss mit der Eingabe für die erneute Verarbeitung der Kamera zu verbinden. Folgen Sie diesem Programmiermodell, um einen leeren Zwischenspeicher zu erhalten:

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

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

Die Klasse ImageReader unterstützt jetzt Bildstreams im PRIVATE-Format. Durch diese Unterstützung kann Ihre App eine kreisförmige Bildwarteschlange mit ImageReader-Ausgabebildern verwalten, ein oder mehrere Bilder auswählen und sie zur erneuten Verarbeitung der Kamera an den ImageWriter senden.

Android for Work-Funktionen

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

  • Erweiterte Steuerungsmöglichkeiten für unternehmenseigene, zweckgebundene Geräte:Der Geräteinhaber kann jetzt die folgenden Einstellungen steuern, um die Verwaltung von unternehmenseigenen, zweckgebundenen Geräten zu verbessern:
    • Sie können den Keyguard mit der Methode setKeyguardDisabled() deaktivieren oder wieder aktivieren.
    • Deaktiviere oder aktiviere die Statusleiste (einschließlich der Schnelleinstellungen, Benachrichtigungen und der Wischgeste nach oben, die Google Now startet), mit der Methode setStatusBarDisabled().
    • Deaktivieren oder aktivieren Sie Safe Boot mit der UserManager-Konstante DISALLOW_SAFE_BOOT.
    • Verhindere, dass sich der Bildschirm ausschaltet, während das Gerät an die Konstante STAY_ON_WHILE_PLUGGED_IN angeschlossen ist.
  • Automatische Installation und Deinstallation von Apps durch Geräteinhaber: Ein Geräteinhaber kann jetzt Apps automatisch über die PackageInstaller APIs installieren und deinstallieren, unabhängig von Google Play for Work. 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 One-Touch-Bereitstellung von Kiosken oder anderen Geräten zu ermöglichen, ohne ein Google-Konto zu aktivieren.
  • Lautloser Zugriff auf Unternehmenszertifikate : Wenn eine App choosePrivateKeyAlias() aufruft, bevor der Nutzer aufgefordert wird, ein Zertifikat auszuwählen, kann das Profil oder der Geräteinhaber jetzt die Methode onChoosePrivateKeyAlias() aufrufen, um den Alias automatisch an die anfragende Anwendung weiterzugeben. Mit dieser Funktion können Sie verwalteten Apps ohne Nutzerinteraktion Zugriff auf Zertifikate gewähren.
  • Automatische Annahme von Systemupdates: Wenn Sie mit setSystemUpdatePolicy() eine Richtlinie für Systemupdates festlegen, kann ein Geräteinhaber ein Systemupdate jetzt automatisch akzeptieren, z. B. für ein Kioskgerät, oder das Update verschieben und für bis zu 30 Tage verhindern, dass es vom Nutzer ausgeführt wird. Außerdem kann ein Administrator ein tägliches Zeitfenster für die Aktualisierung festlegen, z. B. zu Zeiten, wenn ein Kioskgerät nicht verwendet wird. Wenn ein Systemupdate verfügbar ist, prüft das System, ob die Device Policy Controller-App eine Richtlinie für Systemupdates festgelegt hat, und verhält sich entsprechend.
  • Installation eines delegierten Zertifikats:Ein Profil- oder Geräteinhaber kann jetzt einer Drittanbieter-App die Möglichkeit geben, diese DevicePolicyManager-APIs zur Zertifikatsverwaltung aufzurufen:
  • Mobilgerät, auf dem die Benachrichtigungsfunktion für den Arbeitsstatus in Android for Work angezeigt wird
  • Tracking der Datennutzung: Ein Profil- oder Geräteinhaber kann jetzt mit den neuen NetworkStatsManager-Methoden die Statistiken zur Datennutzung abfragen, die unter Einstellungen > Datennutzung angezeigt werden. Profilinhabern wird automatisch die Berechtigung zum Abfragen von Daten in dem von ihnen verwalteten Profil gewährt, während Geräteinhaber Zugriff auf Nutzungsdaten des verwalteten primären Nutzers erhalten.
  • Verwaltung von Laufzeitberechtigungen:

    Ein Profil- oder Geräteinhaber kann eine Berechtigungsrichtlinie für alle Laufzeitanfragen aller Anwendungen festlegen, die setPermissionPolicy() verwenden, um den Nutzer entweder zur Erteilung der Berechtigung aufzufordern oder die Berechtigung automatisch zu gewähren oder abzulehnen. Ist die letztere Richtlinie konfiguriert, kann der Nutzer die vom Profil- oder Geräteinhaber getroffene Auswahl nicht auf dem Berechtigungsbildschirm der App in den Einstellungen ändern.

  • VPN in den Einstellungen:VPN-Apps werden jetzt unter Einstellungen > Mehr > VPN angezeigt. Außerdem sind die Benachrichtigungen zur VPN-Nutzung jetzt spezifisch für die Konfiguration des VPN. Die Benachrichtigungen für Profilinhaber beziehen sich spezifisch darauf, ob das VPN für ein verwaltetes Profil, ein privates Profil oder beides konfiguriert ist. Für einen Geräteinhaber sind die Benachrichtigungen abhängig davon, ob das VPN für das gesamte Gerät konfiguriert ist.
  • Benachrichtigung zum Arbeitsstatus:Wenn eine App aus dem verwalteten Profil eine Aktivität im Vordergrund hat, wird jetzt ein Aktentaschensymbol auf der Statusleiste angezeigt. Wenn das Gerät direkt für die Aktivität einer App im verwalteten Profil entsperrt wird, wird der Nutzer außerdem darüber informiert, dass er sich im Arbeitsprofil befindet.