Interfejsy API Androida 6.0

Android 6.0 (M) zawiera nowe funkcje dla użytkowników i deweloperów aplikacji. Dokument przedstawia wprowadzenie: z najbardziej znanych interfejsów API.

Zacznij programować

Aby zacząć tworzyć aplikacje na Androida 6.0, musisz najpierw pobrać pakiet SDK do Androida. Następnie użyj Menedżera SDK. , aby pobrać platformę SDK Androida 6.0 i obrazy systemu.

Zaktualizuj docelowy poziom interfejsu API

Aby lepiej zoptymalizować aplikację pod kątem urządzeń z Androidem , Ustaw urządzenie targetSdkVersion na "23", zainstaluj aplikację na urządzeniu z Androidem obraz systemu, przetestuj go, a następnie opublikuj zaktualizowaną aplikację z tę zmianę.

Możesz używać interfejsów API Androida, obsługując jednocześnie starsze wersje przez dodanie do kodu warunków, które sprawdzają poziom systemowego interfejsu API przed uruchomieniem interfejsów API nieobsługiwanych przez minSdkVersion. Więcej informacji o zachowaniu zgodności wstecznej znajdziesz w sekcji Pomoc techniczna Różne wersje platformy.

Więcej informacji o poziomach interfejsu API znajdziesz w artykule Co to jest interfejs API? Poziom?

Uwierzytelnianie odciskiem palca

Ta wersja udostępnia nowe interfejsy API, które umożliwiają uwierzytelnianie użytkowników przez skanowanie ich odcisków palców obsługiwanych urządzeniach, używaj tych interfejsów API w połączeniu z systemu Android Keystore.

Aby uwierzytelnić użytkowników za pomocą skanowania odcisku palca, pobierz instancję nowego FingerprintManager i wywołaj metodę authenticate() . Aplikacja musi działać na zgodnej platformie urządzenia z czytnikiem linii papilarnych. Musisz wdrożyć interfejs użytkownika dla odcisku palca uwierzytelniania w aplikacji i użyj w interfejsie standardowej ikony odcisku palca Androida. Ikona odcisku palca na Androidzie (c_fp_40px.png) znajduje się w Przykład uwierzytelniania biometrycznego. Jeśli tworzysz wiele aplikacji korzystających z uwierzytelniania odciskiem palca, pamiętaj, że każda z nich musi niezależnego uwierzytelniania odcisku palca użytkownika.

Aby korzystać z tej funkcji w aplikacji, najpierw dodaj do niej uprawnienia USE_FINGERPRINT w pliku manifestu.

<uses-permission
        android:name="android.permission.USE_FINGERPRINT" />
Urządzenie mobilne z wyświetloną funkcją uwierzytelniania odciskiem palca

Jeśli chcesz zobaczyć, jak w aplikacji jest uwierzytelnianie odciskiem palca, zapoznaj się z artykułami Przykład uwierzytelniania biometrycznego. Aby zobaczyć, jak korzystać z tych uwierzytelniania Interfejsy API w połączeniu z innymi interfejsami API Androida, zobacz film Interfejsy API związane z odciskami cyfrowymi i płatnościami.

Jeśli testujesz tę funkcję, wykonaj te czynności:

  1. Zainstaluj pakiet Android SDK Tools w wersji 24.3, jeśli jeszcze jej nie masz.
  2. Zarejestruj nowy odcisk palca w emulatorze, otwierając stronę Ustawienia > Bezpieczeństwo > odcisk palca, a następnie postępuj zgodnie z instrukcjami rejestracji.
  3. Użyj emulatora do emulowania zdarzeń dotknięcia odciskiem palca za pomocą tego polecenia. Użyj tego samego polecenia, aby emulować kliknięcia odcisku palca na ekranie blokady. w aplikacji.
    adb -e emu finger touch <finger_id>
    

    W systemie Windows konieczne może być uruchomienie polecenia telnet 127.0.0.1 <emulator-id>, a następnie finger touch <finger_id>

Potwierdź dane logowania

Aplikacja może uwierzytelniać użytkowników na podstawie tego, kiedy ostatnio odblokowali swoje urządzenie. Ten dzięki temu użytkownicy nie muszą zapamiętywać dodatkowych haseł aplikacji i unikają konieczności wdrożenia własnego interfejsu uwierzytelniania. Aplikacja powinna używać tej funkcji w: w połączeniu z implementacją klucza publicznego lub tajnego do uwierzytelniania użytkowników.

Aby ustawić czas oczekiwania, po którym ten sam klucz może być używany ponownie po pomyślnym zalogowaniu się użytkownika uwierzytelniony, wywołaj nowy setUserAuthenticationValidityDurationSeconds() podczas konfigurowania KeyGenerator lub KeyPairGenerator

Unikaj nadmiernego wyświetlania okna ponownego uwierzytelniania – aplikacje powinny używać polecenia obiektu kryptograficznego, a gdy upłynie czas oczekiwania, użyj createConfirmDeviceCredentialIntent() do ponownego uwierzytelnienia użytkownika w aplikacji.

Łączenie aplikacji

W tej wersji ulepszyliśmy system intencji Androida, zwiększając możliwości łączenia aplikacji. Ta funkcja umożliwia powiązanie aplikacji z Twoją domeną internetową. Na podstawie platformy, platforma może określić domyślną aplikację używaną do obsługi i pomiń prośbę o wybranie aplikacji. Aby dowiedzieć się, jak wdrożyć tę funkcję, zobacz Obsługa linków aplikacji

Automatyczna kopia zapasowa aplikacji

System automatycznie wykonuje automatyczne tworzenie kopii zapasowych i przywracanie danych aplikacji. Aplikacja musi być kierowana Androida 6.0 (poziom interfejsu API 23), aby umożliwić takie działanie; nie musisz dodawać żadnego dodatkowego kodu. Jeśli użytkownik usunie swoje konta Google, ich kopie zapasowe również zostaną usunięte. Aby dowiedzieć się, jak oraz jak skonfigurować elementy w systemie plików, które mają być przesyłane do kopii zapasowej, zobacz Konfigurowanie Automatycznej kopii zapasowej aplikacji

Udostępnianie bezpośrednie

Dolna część urządzenia mobilnego z widoczną funkcją bezpośredniego udostępniania

Ta wersja udostępnia interfejsy API, dzięki którym użytkownicy mogą szybko i intuicyjnie udostępniać treści. Teraz możesz określać cele dotyczące udziału bezpośredniego, które uruchamiają określone działanie w Twojej aplikacji; Te udostępnianie bezpośrednie są widoczne dla użytkowników w menu Udostępnij. Ta funkcja umożliwia użytkownikom udostępnianie kierowania treści w innych aplikacjach (np. kontaktów). Na przykład docelowy udział bezpośredni może uruchomić aktywność w innej aplikacji społecznościowej, która umożliwia użytkownikowi udostępnianie treści bezpośrednio z konkretnego znajomego lub społeczności w tej aplikacji.

Aby włączyć cele udziału bezpośredniego, musisz zdefiniować klasę, która rozszerza ChooserTargetService zajęcia. Zadeklaruj w pliku manifestu. W tej deklaracji określ Uprawnienie BIND_CHOOSER_TARGET_SERVICE i filtra intencji za pomocą funkcji Działanie SERVICE_INTERFACE.

Ten przykład pokazuje, jak możesz zadeklarować ChooserTargetService w pliku manifestu.

<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>

Dla każdego działania, które chcesz udostępnić ChooserTargetService, dodaj Element <meta-data> o nazwie "android.service.chooser.chooser_target_service" w manifeście aplikacji.

<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>

Interakcje głosowe

W tej wersji udostępniamy nowy interfejs API interakcji głosowej, który w połączeniu Komendy głosowe, pozwalają na wbudowanie w aplikacje trybów konwersacyjnych. Wywołaj funkcję Metoda isVoiceInteraction() pozwalająca określić, czy uruchomiono komendę głosową Twojej aktywności. Jeśli tak, aplikacja może korzystać z VoiceInteractor zajęcia, aby poprosić użytkownika o potwierdzenie głosowe, wybierz z listy opcji itp.

Większość interakcji głosowych ma działanie komendy głosowej użytkownika. Aktywność związana z interakcją głosową może zaczynaj jednak bez wprowadzania danych przez użytkownika. Na przykład inna aplikacja uruchomiona głosowo może też wysyłać zamiar rozpoczęcia interakcji głosowej. Aby określić, czy Twoja aktywność uruchomione przez zapytanie głosowe użytkownika lub z innej aplikacji do interakcji głosowej, wywołaj Metoda isVoiceInteractionRoot(). Jeśli inna aplikacja uruchomiła aktywność, metoda zwraca false. Aplikacja może wtedy poprosić użytkownika o potwierdzenie, to działanie było zamierzone.

Więcej informacji o wdrażaniu komend głosowych znajdziesz w Witryna dla deweloperów komend głosowych

Interfejs Assist API

Ta wersja to nowy sposób, w jaki użytkownicy mogą korzystać z Twoich aplikacji z pomocą Asystenta. Aby użyć użytkownik musi włączyć asystenta, aby korzystał z bieżącego kontekstu. Po włączeniu użytkownik może wywołać asystenta w dowolnej aplikacji, przytrzymując przycisk ekranu głównego.

Aplikacja może nie udostępniać asystentowi bieżącego kontekstu, ustawiając flaga FLAG_SECURE. Oprócz standardowy zestaw informacji, które platforma przekazuje asystentowi, aplikacja może udostępniać aby uzyskać dodatkowe informacje, używając nowej klasy AssistContent.

Aby zapewnić mu dodatkowy kontekst z aplikacji, wykonaj te czynności:

  1. Wdróż interfejs Application.OnProvideAssistDataListener.
  2. Zarejestruj ten detektor za pomocą registerOnProvideAssistDataListener()
  3. Aby podać informacje kontekstowe związane z daną aktywnością, zastąp parametr onProvideAssistData() wywołanie zwrotne i opcjonalnie nowy parametr onProvideAssistContent() oddzwanianie.

Elastyczne urządzenia pamięci masowej

W tej wersji użytkownicy mogą korzystać z zewnętrznych urządzeń pamięci masowej, takich jak karty SD. Wdrożenie zewnętrzne urządzenie pamięci masowej szyfruje i formatuje je, aby działało jak pamięć wewnętrzna. Ten pozwala użytkownikom przenosić zarówno aplikacje, jak i prywatne dane tych aplikacji między urządzeniami pamięci. Kiedy przenoszenia aplikacji, system uwzględnia android:installLocation w pliku manifestu.

Jeśli Twoja aplikacja uzyskuje dostęp do tych interfejsów API lub pól, pamiętaj, że zwracane przez nie ścieżki plików zmienia się dynamicznie podczas przenoszenia aplikacji między wewnętrznym a zewnętrznym urządzeniem pamięci masowej. Zdecydowanie zalecamy, aby przy tworzeniu ścieżek plików zawsze wywoływać te interfejsy API dynamicznie. Nie używaj zakodowanych na stałe ścieżek do plików ani zachowuj w pełni kwalifikowanych ścieżek plików, które zostały utworzone wcześniej.

Aby debugować tę funkcję, możesz włączyć korzystanie z dysku USB, który jest podłączonego do urządzenia z Androidem za pomocą kabla USB On-The-Go (OTG), korzystając z tego polecenia:

$ adb shell sm set-force-adoptable true

Powiadomienia

W tej wersji wprowadziliśmy te zmiany w interfejsie API powiadomień:

Obsługa rysika Bluetooth

Ta wersja zapewnia lepszą obsługę wprowadzania danych przez użytkownika za pomocą rysika Bluetooth. Użytkownicy mogą się parować i połączyć zgodny rysik Bluetooth z telefonem lub tabletem. Po podłączeniu przesuń w pozycję informacje z ekranu dotykowego są łączone z informacjami o ciśnieniu i przyciskach z rysika dają większą swobodę ekspresji niż ekran dotykowy. Aplikacja może nasłuchiwać naciśnie przycisk rysika i wykonuje dodatkowe działania, rejestrując View.OnContextClickListener i GestureDetector.OnContextClickListener obiektów w Twojej aktywności.

Używaj stałych metod i metod MotionEvent do wykrywania przycisku rysika interakcje:

Ulepszone skanowanie Bluetooth Low Energy

Jeśli Twoja aplikacja skanuje urządzenia Bluetooth Low Energy, użyj nowego setCallbackType() pozwala określić, czy system ma powiadamiać wywołania zwrotne, gdy po raz pierwszy znajdzie je lub zobaczy czyli pakietu reklamowego pasującego do zestawu ScanFilter. Ten jest bardziej energooszczędna niż w poprzedniej wersji platformy.

Pomoc do hotspota 2.0 w wersji 1

Ta wersja dodaje obsługę specyfikacji Hotspot 2.0 w wersji 1 na Nexusach 6 i Nexus 9. Do udostępniania danych logowania do hotspota 2.0 w aplikacji, użyj nowych metod WifiEnterpriseConfig klasy, takie jak setPlmn() i setRealm() W WifiConfiguration, możesz ustawić FQDN oraz providerFriendlyName pól. Nowa metoda isPasspointNetwork() wskazuje, czy reprezentuje punkt dostępu Hotspot 2.0.

Tryb wyświetlacza 4K

Platforma pozwala teraz aplikacjom prosić o zmianę rozdzielczości wyświetlacza na renderowanie 4K. na zgodnym sprzęcie. Aby przesłać zapytanie o bieżącą rozdzielczość fizyczną, użyj nowej Display.Mode interfejsów API. Jeśli interfejs użytkownika jest wyświetlany w niższej rozdzielczości logicznej i jest należy zwiększyć rozdzielczość fizyczną, należy pamiętać, że rozdzielczość fizyczna Zwracane metody getPhysicalWidth() mogą różnić się od wartości logicznej Rozwiązanie zgłoszone przez: getSize().

Możesz poprosić system o zmianę rozdzielczości fizycznej w trakcie działania aplikacji, ustawiając właściwości preferredDisplayModeId przypisanej do okno. Ta funkcja jest przydatna, gdy chcesz przełączyć się na rozdzielczość 4K. Na wyświetlaczu 4K interfejs będzie nadal renderowany w oryginalnej rozdzielczości (np. 1080p) i powiększy się do 4K, ale obiekty SurfaceView mogą wyświetlać treści w rozdzielczości natywnej.

Motywy ColorStateLists

Atrybuty motywu są teraz obsługiwane w ColorStateList na urządzeniach z Androidem 6.0 (poziom interfejsu API 23). Resources.getColorStateList() i Dotychczasowe metody: Resources.getColor() wycofane. Jeśli wywołujesz te interfejsy API, wywołaj nowe Context.getColorStateList() lub Context.getColor() metod. Te metody są są też dostępne w bibliotece pakietu Appcompat w wersji 4 w usłudze ContextCompat.

Funkcje audio

W tej wersji wprowadziliśmy ulepszenia w zakresie przetwarzania dźwięku na Androidzie, takie jak:

  • obsługa MIDI, z nowymi interfejsami API android.media.midi. Użyj tych interfejsów API do wysyłania i odbierania MIDI zdarzeń.
  • Nowe AudioRecord.Builder i AudioTrack.Builder klas do tworzenia cyfrowych obiektów do przechwytywania i odtwarzania dźwięku oraz konfigurowania dźwięku właściwości źródła i ujścia, aby zastąpić wartości domyślne systemu.
  • Punkty zaczepienia interfejsu API do kojarzenia urządzeń audio i wejściowych. Jest to szczególnie przydatne, jeśli Twoja aplikacja umożliwia użytkownikom rozpoczynanie wyszukiwania głosowego za pomocą kontrolera do gier lub pilota połączonego z Androidem. Telewizja. System wywołuje nowe onSearchRequested() wywołanie zwrotne, gdy użytkownik rozpocznie wyszukiwanie. Aby określić, czy urządzenie wejściowe użytkownika ma wbudowany mikrofonu, pobierz obiekt InputDevice z tego wywołania zwrotnego, a następnie wywołaj metodę nową metodę hasMicrophone().
  • Nowa metoda getDevices(), która umożliwia pobierze listę wszystkich urządzeń audio aktualnie podłączonych do systemu. Możesz też zarejestrować AudioDeviceCallback obiekt, jeśli chcesz, aby system powiadamiał Twoją aplikację gdy urządzenie audio łączy się lub rozłącza.

Funkcje wideo

W tej wersji dodaliśmy do interfejsów API przetwarzania wideo nowe funkcje, w tym:

  • Nowa klasa MediaSync, która ułatwia synchroniczne renderowanie aplikacji strumienie audio i wideo. Bufory audio są przesyłane w sposób nieblokujący i są zwrócony przez oddzwonienie. Obsługuje również dynamiczną szybkość odtwarzania.
  • Nowe zdarzenie EVENT_SESSION_RECLAIMED, które wskazuje, że sesja otwarta przez aplikację została odebrana przez menedżera zasobów. Jeśli aplikacja używa sesji DRM, należy obsługiwać to zdarzenie i uważać, aby nie używać odzyskanej sesji.
  • Nowy kod błędu ERROR_RECLAIMED, który wskazuje że menedżer zasobów odzyskał zasób multimedialny używany przez kodek. Wyjątkiem jest funkcja kodek musi zostać zwolniony, ponieważ trafił do stanu terminala.
  • Nowy interfejs getMaxSupportedInstances() otrzymujący wskazówkę dotyczącą maksymalnej liczby obsługiwanych instancji kodeków.
  • Nowa metoda setPlaybackParams() do ustawiania szybkości odtwarzania multimediów w zwolnionym tempie. Automatycznie rozciąga też lub przyspiesza odtwarzanie dźwięku w wraz z filmem.

Funkcje aparatu

Ta wersja zawiera następujące nowe interfejsy API umożliwiające dostęp do latarki aparatu oraz ponowne przetwarzanie zdjęć przez aparat:

Interfejs Flashlight API

Jeśli aparat ma lampę błyskową, możesz wywołać setTorchMode() do włączania i wyłączania trybu latarki bez otwierania aparatu. Aplikacja nie posiada wyłącznych własności lampy błyskowej ani aparatu. Tryb latarki jest włączony jest wyłączona i staje się niedostępna, gdy aparat jest niedostępny lub gdy inna kamera zasoby, które utrzymują włączoną pochodnię, stają się niedostępne. Inne aplikacje mogą też zadzwonić setTorchMode() , aby wyłączyć tryb latarki. Kiedy ostatnia aplikacja włączyła tryb latarki, tryb jest wyłączony.

Możesz zarejestrować wywołanie zwrotne, które ma być powiadamiane o stanie trybu lampy, wywołując metodę registerTorchCallback() . Przy pierwszej rejestracji wywołania zwrotnego jest ono natychmiast wywoływane w trybie latarki wszystkich znanych obecnie aparatów z lampą błyskową. Jeśli tryb latarki jest włączony lub zostanie wyłączony, onTorchModeChanged() .

Ponowne przetwarzanie interfejsu API

Interfejs API Camera2 został rozszerzony o obsługę reklam YUV i prywatnych ponowne przetwarzanie obrazu nieprzejrzystego. Aby sprawdzić, czy te funkcje ponownego przetwarzania są dostępne, Zadzwoń pod numer getCameraCharacteristics() i sprawdź, czy REPROCESS_MAX_CAPTURE_STALL. Jeśli obsługuje ponowne przetwarzanie, możesz utworzyć sesję nagrywania filmów aparatem, wywołując createReprocessableCaptureSession() i tworzą żądania ponownego przetwarzania bufora wejściowego.

Użyj klasy ImageWriter, aby podłączyć do kamery przepływ bufora wejściowego ponownie przetwarzam dane wejściowe. Aby uzyskać pusty bufor, postępuj zgodnie z tym modelem programowania:

  1. Wywołaj metodę dequeueInputImage().
  2. Umieścić dane w buforze wejściowym.
  3. Wyślij bufor do kamery, wywołując metodę Metoda queueInputImage().

Jeśli używasz obiektu ImageWriter razem z obiektem Obraz PRIVATE, aplikacja nie ma do niego dostępu bezpośrednio na dane. Zamiast tego przekaż obraz PRIVATE bezpośrednio do ImageWriter, wywołując metodę Metoda queueInputImage() bez kopii buforowej.

Klasa ImageReader obsługuje teraz Strumienie obrazów w formacie PRIVATE. Dzięki temu aplikacja może: zachować kolejkę obrazów okrągłych złożoną z ImageReader obrazów wyjściowych, wybierz jeden lub więcej zdjęć i wysłać je do usługi ImageWriter w celu ponownego przetworzenia.

Funkcje Android for Work

Ta wersja zawiera następujące nowe interfejsy API dla Android for Work:

  • Ulepszone ustawienia na urządzeniach jednorazowych należących do firmy: właściciel urządzenia może teraz kontrolować następujące ustawienia, aby usprawnić zarządzanie Urządzenia jednorazowe należące do firmy:
  • Instalowanie i odinstalowywanie aplikacji w trybie cichym przez właściciela urządzenia: właściciel urządzenia może teraz dyskretne instalowanie i odinstalowywanie aplikacji za pomocą PackageInstaller Interfejsy API niezależne od Google Play for Work. Urządzenia można teraz obsługiwać za pomocą konta właściciela, który pobiera i instaluje aplikacje bez interakcji ze strony użytkownika. Ta funkcja jest przydatna, gdy trzeba włączyć obsługę jednym kliknięciem obsługi administracyjnej kiosków lub innych urządzeń bez aktywacji konta Google.
  • Cichy dostęp do certyfikatów przedsiębiorstwa: gdy aplikacja wywołuje choosePrivateKeyAlias(), zanim użytkownik zostanie poproszony o wybranie certyfikatu, właściciel profilu lub urządzenia może teraz zadzwonić onChoosePrivateKeyAlias() dyskretnego udostępnienia aliasu aplikacji żądającej. Ta funkcja pozwala przyznać dostęp aplikacji zarządzanych do certyfikatów bez interakcji ze strony użytkownika.
  • Automatyczne akceptowanie aktualizacji systemu. Przez ustawienie zasady aktualizacji systemu za pomocą: setSystemUpdatePolicy(), właściciel urządzenia może teraz automatycznie akceptować system (np. w przypadku urządzenia kiosku) lub odłożyć aktualizację na później, przez użytkownika w ciągu maksymalnie 30 dni. Ponadto administrator może ustawić dzienny przedział czasu w których aktualizacja jest wymagana, np. w godzinach, gdy urządzenie kiosku nie jest używane. Kiedy dostępna jest aktualizacja systemu, system sprawdza, czy aplikacja kontrolera zasad urządzeń ustawiła Google Analytics i w razie potrzeby działa w odpowiedni sposób.
  • Instalacja certyfikatu delegowanego: właściciel profilu lub urządzenia może możliwość wywoływania tych certyfikatów przez aplikację innej firmy (DevicePolicyManager) interfejsy API do zarządzania:
  • Urządzenie mobilne z funkcją powiadomień o stanie pracy w Android for Work
  • Śledzenie użycia danych Właściciel profilu lub urządzenia może teraz wysyłać zapytania dotyczące statystyki użycia danych można wyświetlić w sekcji Ustawienia > transmisji danych za pomocą nowej NetworkStatsManager metod. Właściciele profili są przyznawani automatycznie uprawnienia do wysyłania zapytań o dane w zarządzanym profilu, podczas gdy właściciele urządzeń mają dostęp do danych o użytkowaniu na koncie zarządzanego głównego użytkownika.
  • Zarządzanie uprawnieniami w czasie działania aplikacji:

    Właściciel profilu lub urządzenia może ustawić zasady uprawnień dla wszystkich żądań środowiska wykonawczego wszystkich aplikacji używających setPermissionPolicy(), aby wyświetlić użytkownikowi prośbę o przyznanie uprawnień bądź automatycznie przyznać lub dyskretnie odmówić przyznania tych uprawnień. Jeśli skonfigurowana jest ta druga zasada, użytkownik nie może zmienić wybór dokonany przez profil lub właściciela urządzenia na ekranie uprawnień aplikacji w Ustawienia.

  • VPN w Ustawieniach: aplikacje VPN są teraz widoczne w Ustawienia > Więcej > VPN Dodatkowo powiadomienia powiązane z korzystaniem z VPN zależą teraz od tego, skonfigurowany. W przypadku właściciela profilu powiadomienia zależą od tego, czy skonfigurowano sieć VPN. dla profilu zarządzanego, osobistego lub obu tych elementów. Właściciele urządzenia otrzymują powiadomienia zależnie od tego, czy sieć VPN jest skonfigurowana dla całego urządzenia.
  • Powiadomienie o stanie pracy: za każdym razem, gdy na pasku stanu pojawia się ikona aktówki, aplikacja z profilu zarządzanego ma aktywność na pierwszym planie. Ponadto, jeśli urządzenie jest jest odblokowany bezpośrednio z aktywnością aplikacji w profilu zarządzanym, wyświetla się powiadomienie że znajduje się on w profilu służbowym.