APIs unter Android 6.0

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

Hier geht es los

Um mit der Entwicklung von Apps für Android 6.0 zu beginnen, müssen Sie zunächst das Android SDK. Verwenden Sie dann den SDK Manager. um die Android 6.0 SDK-Plattform und System-Images herunterzuladen.

Ziel-API-Level aktualisieren

Um deine App besser für Geräte mit Android zu optimieren , targetSdkVersion festlegen auf "23", installiere deine App auf einem Android-Gerät System-Image hinzufügen, testen und dann die aktualisierte App diese Änderung.

Du kannst Android-APIs verwenden und gleichzeitig ältere Versionen, indem Sie Ihrem Code Bedingungen hinzufügen, mit denen das System-API-Level geprüft wird bevor APIs ausgeführt werden, die von der minSdkVersion nicht unterstützt werden. Weitere Informationen zur Aufrechterhaltung der Abwärtskompatibilität finden Sie unter Unterstützung Verschiedene Plattformversionen.

Weitere Informationen zur Funktionsweise von API-Ebenen finden Sie unter Was ist eine API? Stufe?

Authentifizierung per Fingerabdruck

Dieser Release umfasst neue APIs, mit denen Sie Nutzer anhand ihrer Fingerabdruckscans auf unterstützten Geräten verwenden, verwenden Sie diese APIs in Verbindung mit das Android Keystore-System.

Um Nutzer per Fingerabdruckscan zu authentifizieren, rufen Sie eine Instanz des neuen FingerprintManager und rufen Sie die authenticate() . Ihre App muss auf einem kompatiblen einen Fingerabdrucksensor verwenden. Sie müssen die Benutzeroberfläche für den Fingerabdruck implementieren Authentifizierungsvorgang in deiner App und verwende das standardmäßige Android-Fingerabdrucksymbol in deiner Benutzeroberfläche. Das Android-Fingerabdrucksymbol (c_fp_40px.png) ist im Beispiel für biometrische Authentifizierung. Wenn Sie mehrere Apps mit Fingerabdruckauthentifizierung entwickeln, muss jede App den Fingerabdruck des Nutzers unabhängig authentifizieren.

Um diese Funktion in Ihrer App zu verwenden, fügen Sie zuerst den USE_FINGERPRINT in deinem Manifest.

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

Eine App-Implementierung der Fingerabdruckauthentifizierung findest du in der Beispiel für biometrische Authentifizierung. Demonstration, wie Sie diese Authentifizierung verwenden können APIs in Verbindung mit anderen Android-APIs (siehe Video) <ph type="x-smartling-placeholder"></ph> Fingerprint and Payment APIs (Fingerabdruck- und Zahlungs-APIs)

Wenn Sie diese Funktion testen, gehen Sie so vor:

  1. Installieren Sie Android SDK Tools Version 24.3, falls Sie dies noch nicht getan haben.
  2. Registrieren Sie einen neuen Fingerabdruck im Emulator. Gehen Sie dazu zu Einstellungen > Sicherheit > Fingerabdruck verwenden und folgen Sie dann der Anleitung zur Registrierung.
  3. Verwenden Sie einen Emulator, um Fingerabdruck-Berührungsereignisse mit dem folgenden Befehl. Verwenden Sie denselben Befehl, um Touch-Ereignisse per Fingerabdruck auf dem Sperrbildschirm zu emulieren oder in Ihrer App.
    adb -e emu finger touch <finger_id>
    

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

Anmeldedaten bestätigen

Ihre App kann Nutzer anhand der Zeit authentifizieren, mit der sie ihr Gerät zuletzt entsperrt haben. Dieses können sich Nutzer nicht mehr zusätzliche App-spezifische Passwörter merken damit Sie Ihre eigene Benutzeroberfläche zur Authentifizierung implementieren können. Deine App sollte diese Funktion in in Verbindung mit der Implementierung eines öffentlichen oder geheimen Schlüssels für die Nutzerauthentifizierung.

Zum Festlegen des Zeitlimits, für das derselbe Schlüssel wiederverwendet werden kann, nachdem ein Nutzer erfolgreich war authentifiziert haben, rufen Sie die neue setUserAuthenticationValidityDurationSeconds() wenn Sie eine KeyGenerator- oder KeyPairGenerator

Vermeiden Sie es, das Dialogfeld für die erneute Authentifizierung übermäßig anzuzeigen. Ihre Apps sollten die Methode und bei Ablauf der Zeitüberschreitung verwenden Sie die Methode createConfirmDeviceCredentialIntent() , um den Nutzer noch einmal in der App zu authentifizieren.

App-Verknüpfung

Diese Version verbessert das Intent-System von Android durch eine effizientere App-Verknüpfung. Mit dieser Funktion können Sie eine App mit einer Webdomain verknüpfen, deren Inhaber Sie sind. Basierend auf diesem verknüpft, kann die Plattform die Standard-App bestimmen, die zur Verarbeitung einer bestimmten und die Aufforderung der Nutzer zur Auswahl einer App überspringen. Informationen zur Implementierung dieser Funktion finden Sie unter Umgang mit App-Links

Automatische Sicherung für Apps

Das System führt jetzt eine automatische Sicherung und Wiederherstellung der vollständigen Daten für Apps durch. Ihre App muss auf Folgendes ausgerichtet sein: Android 6.0 (API-Level 23), um dieses Verhalten zu ermöglichen: müssen Sie keinen zusätzlichen Code hinzufügen. Wenn Nutzer ihre Google-Konten löschen, werden auch ihre Sicherungsdaten gelöscht. Um zu erfahren, wie dies und wie Sie konfigurieren können, was im Dateisystem gesichert werden soll, siehe Automatische Sicherung für Apps konfigurieren

Direkt teilen

Unterer Teil eines Mobilgeräts, auf dem die Funktion „Direct Share“ zu sehen ist

In dieser Version stehen Ihnen APIs zur Verfügung, mit denen sich das Teilen für Nutzer intuitiv und schnell gestalten lässt. Sie können jetzt Definieren Sie direkte Freigabeziele, um eine bestimmte Aktivität in Ihrer App zu starten. Diese direkten Anteile Ziele sind für Nutzer über das Menü Teilen sichtbar. Mit dieser Funktion können Nutzer auf Ziele wie Kontakte in anderen Apps ausrichten. Das Direktfreigabeziel könnte z. B. Eine Aktivität in einer anderen App eines sozialen Netzwerks starten, wodurch der Nutzer Inhalte direkt mit einem Freunde oder Communitys teilen möchten.

Um direkte Freigabeziele zu aktivieren, müssen Sie eine Klasse definieren, die die Klasse ChooserTargetService. Deklarieren Sie Ihre im Manifest angegeben werden. Geben Sie innerhalb dieser Deklaration den Parameter Berechtigung BIND_CHOOSER_TARGET_SERVICE und ein Intent-Filter mit der SERVICE_INTERFACE Aktion.

Das folgende Beispiel zeigt, wie Sie das Attribut ChooserTargetService in deinem Manifest.

<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ür jede Aktivität, die Sie ChooserTargetService, fügen Sie ein <meta-data>-Element mit dem Namen "android.service.chooser.chooser_target_service".

<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

Diese Version bietet ein neues Sprachinteraktions-API, das zusammen mit Sprachbedienung ermöglicht es dir, eine dialogorientierte Sprache in deine Apps einzubinden. Rufen Sie die Methode isVoiceInteraction()-Methode, um zu ermitteln, ob eine Sprachbedienung ausgelöst wurde Ihre Aktivitäten. In diesem Fall kann Ihre App die Methode VoiceInteractor-Klasse, um eine Sprachbestätigung vom Nutzer anzufordern, wählen Sie aus einer Liste von Optionen usw. auswählen.

Die meisten Interaktionen erfolgen per Sprachbefehl. Eine Sprachinteraktion kann auch ohne Nutzereingabe beginnen. Beispiel: Eine andere App, die per Sprachbefehl gestartet wird, Interaktion kann auch einen Intent senden, um eine Sprachinteraktion zu starten. Um festzustellen, ob Ihre Aktivitäten die über die Sprachanfrage des Nutzers oder eine andere App für Sprachinteraktionen gestartet wird, isVoiceInteractionRoot()-Methode. Wenn Ihr Aktivität gibt die Methode false zurück. Ihre App kann den Nutzer dann auffordern, zu bestätigen, dass diese Aktion beabsichtigt war.

Weitere Informationen zur Implementierung der Sprachbedienung finden Sie in der Entwicklerwebsite für die Sprachbedienung

Assist-API

Diese Version bietet Nutzern eine neue Möglichkeit, über einen Assistenten mit Ihren Apps zu interagieren. So verwenden Sie diese aktiviert haben, muss der Nutzer den Assistenten aktivieren, um den aktuellen Kontext zu verwenden. Nach der Aktivierung kann der Nutzer kannst den Assistenten in jeder App aufrufen, indem du lange auf die Startbildschirmtaste drückst.

Deine App kann festlegen, dass der aktuelle Kontext nicht für den Assistenten freigegeben wird, indem die Flag FLAG_SECURE. Zusätzlich zu den Standarddatensatz, den die Plattform an den Assistenten weitergibt, kann Ihre App diese Informationen mithilfe der neuen Klasse AssistContent zusätzliche Informationen erhalten.

So stellst du dem Assistenten zusätzlichen Kontext aus deiner App bereit:

  1. Implementieren Sie die Application.OnProvideAssistDataListener-Schnittstelle.
  2. Registrieren Sie diesen Listener mithilfe von registerOnProvideAssistDataListener()
  3. Um aktivitätsspezifische Kontextinformationen bereitzustellen, überschreiben Sie die onProvideAssistData() Callback und optional das neue onProvideAssistContent() Callback des Nutzers an.

Verwendbare Speichergeräte

Mit dieser Version können Nutzer externe Speichergeräte wie SD-Karten akzeptieren. Die Anwendung eines Das externe Speichergerät verschlüsselt und formatiert das Gerät so, dass es sich wie der interne Speicher verhält. Dieses können Nutzer sowohl Apps als auch private Daten dieser Apps auf andere Speichergeräte verschieben. Wann? beim Verschieben von Apps berücksichtigt, respektiert das System die android:installLocation im Manifest.

Wenn Ihre Anwendung auf die folgenden APIs oder Felder zugreift, beachten Sie, dass die von ihnen zurückgegebenen Dateipfade ändert sich 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 speichern Sie keine voll qualifizierten Dateipfade, die zuvor erstellt wurden.

Um Fehler bei dieser Funktion zu beheben, können Sie die Verwendung eines USB-Speichers aktivieren, der das über ein USB-OTG-Kabel (On-the-Go) mit einem Android-Gerät verbunden ist, indem Sie den folgenden Befehl ausführen:

$ 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

Diese Version bietet verbesserte Unterstützung für Nutzereingaben über einen Bluetooth-Eingabestift. Nutzer können koppeln und einen kompatiblen Bluetooth-Eingabestift mit dem Smartphone oder Tablet verbinden. Bei bestehender Verbindung positionieren Informationen vom Touchscreen werden mit Druck- und Tasteninformationen des Eingabestifts bieten mehr Ausdrucksmöglichkeiten als nur mit dem Touchscreen. Ihre App kann auf das Drücken der Eingabestifttaste und führt sekundäre Aktionen durch, View.OnContextClickListener und GestureDetector.OnContextClickListener Objekte in deiner Aktivität.

Mit den MotionEvent-Methoden und -Konstanten die Eingabestifttaste erkennen Interaktionen:

Verbesserte Bluetooth Low Energy-Suche

Wenn deine App Bluetooth Low Energy sucht, verwende die neue setCallbackType() , um anzugeben, dass das System Rückrufe benachrichtigen soll, wenn es das erste Mal einen lang ist, wurde ein Advertising-Paket erstellt, das mit dem Satz ScanFilter übereinstimmt. Dieses Der Scanansatz ist energieeffizienter als die vorherige Plattformversion.

Unterstützung für Hotspot 2.0 Version 1

Diese Version unterstützt die Spezifikation Hotspot 2.0 Release 1 auf Nexus 6- und Nexus 9-Geräten. Bis Hotspot 2.0-Anmeldedaten in Ihrer Anwendung bereitstellen, verwenden Sie die neuen Methoden der WifiEnterpriseConfig-Klasse, z. B. setPlmn() und setRealm() Im WifiConfiguration-Objekt enthält, können Sie den Parameter FQDN und die providerFriendlyName-Felder. Die neue Methode isPasspointNetwork() gibt an, ob eine erkannte Netzwerk einen Hotspot 2.0-Zugangspunkt darstellt.

4K-Anzeigemodus

Über die Plattform können Apps jetzt anfordern, dass die Bildschirmauflösung auf 4K-Rendering aktualisiert wird. auf kompatibler Hardware. Verwenden Sie zum Abfragen der aktuellen physischen Auflösung die neue Display.Mode-APIs. Wenn die Benutzeroberfläche mit einer niedrigeren logischen Auflösung gezeichnet wurde und physisch hochauflösender Bilder hochskaliert, berücksichtigen Sie, dass die physische Auflösung Die Rückgabe der getPhysicalWidth()-Methode kann vom logischen Wert abweichen Problembehebung gemeldet von getSize().

Sie können beantragen, dass das System die physische Auflösung in Ihrer laufenden App ändert. Legen Sie dazu das Attribut preferredDisplayModeId der . Diese Funktion ist nützlich, wenn Sie zur 4K-Bildschirmauflösung wechseln möchten. In 4K-Bildschirm wird die Benutzeroberfläche weiterhin in der ursprünglichen Auflösung (z. B. 1080p) gerendert und auf 4K, aber SurfaceView-Objekte können Inhalte in der nativen Auflösung anzeigen.

Themeable ColorStateLists

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

Audiofunktionen

Dieser Release enthält Verbesserungen bei der Audioverarbeitung unter Android, darunter:

  • Unterstützung für MIDI mit den neuen android.media.midi APIs. Diese APIs zum Senden und Empfangen von MIDI verwenden Ereignisse.
  • Neue AudioRecord.Builder und AudioTrack.Builder -Klassen zur Erstellung digitaler Audioaufzeichnungs- bzw. -wiedergabeobjekte und zum Konfigurieren von Audioanzeigen. Quell- und Senkeneigenschaften die Systemstandardwerte zu überschreiben.
  • API-Hooks zum Verknüpfen von Audio- und Eingabegeräten. Das ist besonders nützlich, wenn Ihre App Nutzer können über einen Controller oder eine Fernbedienung, die mit Android verbunden sind, eine Sprachsuche starten Fernseher. Das System ruft die neue onSearchRequested() -Rückruf zurück, wenn der Nutzer eine Suche startet. Um festzustellen, ob das Eingabegerät des Nutzers eine integrierte Mikrofon, rufen Sie das InputDevice-Objekt von diesem Callback ab und rufen Sie dann die Methode neue Methode hasMicrophone().
  • Mit der neuen getDevices()-Methode können Sie eine Liste aller Audiogeräte abrufen, die derzeit mit dem System verbunden sind. Sie können auch eine AudioDeviceCallback-Objekt, wenn du möchtest, dass das System deine App benachrichtigt. Ein Audiogerät stellt eine Verbindung her oder trennt seine Verbindung.

Videofunktionen

In diesem Release werden den APIs zur Videoverarbeitung neue Funktionen hinzugefügt, darunter:

  • Neue MediaSync-Klasse, mit der Anwendungen synchron rendern können Audio- und Videostreams. Die Audiopuffer werden nicht blockierend gesendet und die über einen Callback zurückgegeben wurden. Eine dynamische Wiedergaberate wird ebenfalls unterstützt.
  • Neues EVENT_SESSION_RECLAIMED-Ereignis, das angibt, dass ein von der App geöffnete Sitzung wurde vom Ressourcenmanager freigegeben. Wenn Ihre App DRM-Sitzungen nutzt, sollten Sie dieses Ereignis verarbeiten und vermeiden, eine freigegebene Sitzung zu verwenden.
  • Neuer ERROR_RECLAIMED-Fehlercode, der angibt, dass der Ressourcenmanager die vom Codec verwendete Medienressource zurückgefordert hat. Mit dieser Ausnahme -Codec muss freigegeben werden, da er sich im Endzustand befindet.
  • Neue getMaxSupportedInstances()-Oberfläche, um einen Hinweis für die maximale Anzahl der unterstützten gleichzeitigen Codec-Instanzen.
  • Neue setPlaybackParams()-Methode zum Einstellen der Medienwiedergaberate auf schnelle oder Zeitlupe. Außerdem wird die Audiowiedergabe automatisch gestreckt oder beschleunigt, die mit dem Video in Verbindung stehen.

Kamerafunktionen

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

Flashlight-API

Verfügt eine Kamera über ein Blitzgerät, können Sie die Funktion setTorchMode() um den Taschenlampenmodus ein- oder auszuschalten, ohne die Kamera zu öffnen. Die App nicht das alleinige Eigentumsrecht am Blitzgerät oder der Kamera besitzt. Der Taschenlampenmodus ist aktiviert aus und ist nicht mehr verfügbar, wenn die Kamera nicht mehr verfügbar ist oder wenn eine andere Kamera Ressourcen, die die Taschenlampe eingeschaltet haben, nicht mehr verfügbar sind. Andere Apps können auch Anrufe tätigen setTorchMode() um den Taschenlampenmodus auszuschalten. Wenn die letzte App, mit der der Taschenmodus aktiviert wurde, geschlossen wird, Modus deaktiviert ist.

Sie können einen Callback registrieren, der über den Status des Taschenmodus informiert wird. Rufen Sie dazu die registerTorchCallback() . Wenn der Callback zum ersten Mal registriert wird, wird er sofort mit dem Taschenmodus aufgerufen Status aller derzeit bekannten Kamerageräte mit einem Blitzgerät. Wenn der Taschenlampenmodus aktiviert ist oder abgeschlossen ist, wird der onTorchModeChanged() aufgerufen wird.

API für die erneute Verarbeitung

Die Camera2 API wurde erweitert, um YUV und private zu unterstützen Erneute Verarbeitung von opaken Bildern. Um festzustellen, ob diese Wiederverarbeitungsfunktionen verfügbar sind, rufen Sie getCameraCharacteristics() auf und prüfen Sie, REPROCESS_MAX_CAPTURE_STALL-Taste. Wenn ein Gerät die erneute Verarbeitung unterstützt, können Sie eine wiederverarbeitbare Kameraaufnahmesitzung erstellen, indem Sie createReprocessableCaptureSession(), und Anfragen zur erneuten Verarbeitung von Eingabepuffern erstellen.

Verwende die Klasse ImageWriter, um den Eingabepuffer mit der Kamera zu verbinden die Eingabe erneut verarbeiten. Folgen Sie diesem Programmiermodell, um einen leeren Puffer zu erhalten:

  1. Rufen Sie die Methode dequeueInputImage() auf.
  2. Geben Sie die Daten in den Eingabepuffer ein.
  3. Senden Sie den Puffer an die Kamera, indem Sie die Methode queueInputImage()-Methode.

Wenn Sie ein ImageWriter-Objekt zusammen mit einem PRIVATE Bild, deine App kann nicht auf das Bild zugreifen Daten direkt. Übergeben Sie stattdessen das PRIVATE-Image direkt an die ImageWriter durch Aufrufen der Methode Methode queueInputImage() ohne Pufferkopien.

Die Klasse ImageReader unterstützt jetzt Bildstreams im PRIVATE-Format. Diese Unterstützung ermöglicht es deiner App, Pflegen Sie eine kreisförmige Image-Warteschlange mit ImageReader Ausgabebildern. Wählen Sie eines oder und senden Sie sie zur erneuten Verarbeitung an ImageWriter.

Android for Work-Funktionen

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

  • Erweiterte Einstellungen für unternehmenseigene, zweckgebundene Geräte:Der Geräteinhaber kann jetzt die folgenden Einstellungen steuern, um die Verwaltung von Unternehmenseigene, COSU-Geräte: <ph type="x-smartling-placeholder">
      </ph>
    • Deaktivieren oder aktivieren Sie den Keyguard mit der setKeyguardDisabled()-Methode.
    • Deaktivieren oder aktivieren Sie die Statusleiste einschließlich der Schnelleinstellungen, Benachrichtigungen und der Navigationsgeste zum Starten von Google Now). setStatusBarDisabled() .
    • Safe Boot mit der Konstante UserManager deaktivieren oder wieder aktivieren DISALLOW_SAFE_BOOT.
    • Verhindern, dass sich der Bildschirm ausschaltet, wenn das Gerät an eine Stromquelle angeschlossen ist STAY_ON_WHILE_PLUGGED_IN-Konstante.
  • Automatische Installation und Deinstallation von Apps durch den Geräteinhaber:Ein Geräteinhaber kann jetzt Apps mithilfe der PackageInstaller automatisch installieren und deinstallieren APIs, unabhängig von Google Play for Work. Sie können Geräte jetzt über einen Geräteinhaber bereitstellen, Apps ohne Nutzerinteraktion abrufen und installieren. Diese Funktion ist nützlich, um Bereitstellung von Kiosken oder ähnlichen Geräten ohne Aktivierung eines Google-Kontos
  • Zugriff auf Unternehmenszertifikate im Hintergrund : Ruft eine App auf choosePrivateKeyAlias(), bevor der Nutzer zur Auswahl eines Zertifikats aufgefordert wird, kann der Profil- oder Geräteinhaber jetzt onChoosePrivateKeyAlias() , um der anfragenden Anwendung den Alias im Hintergrund bereitzustellen. Mit dieser Funktion können Sie Verwaltete Apps haben ohne Nutzerinteraktion Zugriff auf Zertifikate.
  • Automatische Annahme von Systemupdates. Durch Festlegen einer Richtlinie für Systemupdates setSystemUpdatePolicy(), können Geräteeigentümer jetzt Systemakzeptanzen automatisch z. B. bei einem Kioskgerät, oder verschieben Sie das Update, um zu verhindern, vom Nutzer bis zu 30 Tage lang angezeigt wird. Außerdem kann ein Administrator ein tägliches Zeitfenster für die ein Update durchgeführt werden muss, z. B. während der Geschäftszeiten, wenn ein Kioskgerät nicht verwendet wird. Wann? ein Systemupdate verfügbar ist, prüft das System, ob in der Device Policy Controller-App ein System aktualisiert und sich entsprechend verhält.
  • Installation eines delegierten Zertifikats: Ein Profil oder Geräteinhaber kann jetzt Drittanbieter-App die Möglichkeit, dieses DevicePolicyManager-Zertifikat Management-APIs: <ph type="x-smartling-placeholder">
  • Mobilgerät, auf dem die Benachrichtigungsfunktion zum Arbeitsstatus in Android for Work angezeigt wird
  • Datennutzungs-Tracking: Ein Profil- oder Geräteinhaber kann nun Statistiken zur Datennutzung erscheinen unter Einstellungen > Datennutzung mithilfe des neuen NetworkStatsManager-Methoden. Profilinhabern werden automatisch Berechtigung, Daten in dem von ihnen verwalteten Profil abzufragen, während Geräteinhaber Zugriff auf Nutzungsdaten erhalten des verwalteten primären Nutzers.
  • Verwaltung von Laufzeitberechtigungen:

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

  • VPN in den Einstellungen:VPN-Apps sind jetzt sichtbar in Einstellungen > Mehr > VPN Außerdem beziehen sich die Benachrichtigungen zur VPN-Nutzung nun speziell auf die Art und Weise, wie das VPN konfiguriert. Für Profilinhaber sind die Benachrichtigungen spezifisch dafür, ob das VPN konfiguriert ist für ein verwaltetes Profil, ein privates Profil oder beides. Für einen Geräteeigentümer sind die Benachrichtigungen gibt an, ob das VPN für das gesamte Gerät konfiguriert ist.
  • Benachrichtigung zum Arbeitsstatus: Ein Aktenkoffersymbol in der Statusleiste wird jetzt immer angezeigt, wenn Bei einer App aus dem verwalteten Profil wird eine Aktivität im Vordergrund ausgeführt. Wenn das Gerät außerdem direkt auf die Aktivität einer App im verwalteten Profil entsperrt wird, wird ein Toast mit einer Benachrichtigung angezeigt. dass der Nutzer sich im Arbeitsprofil befindet.