Android 6.0 (M)은 사용자 및 앱 개발자를 위한 새로운 기능을 제공합니다. 이 문서에서는 가장 주목할 만한 API를 소개합니다.
개발 시작
Android 6.0용 앱을 빌드하려면 먼저 Android SDK를 다운로드해야 합니다. 그런 다음 SDK Manager를 사용하여 Android 6.0 SDK 플랫폼 및 시스템 이미지를 다운로드합니다.
대상 API 수준 업데이트
Android를 실행하는 기기에 맞게 앱을 더 잘 최적화하려면 targetSdkVersion을 "23"로 설정하고, Android 시스템 이미지에 앱을 설치하고, 테스트한 후 이 변경사항을 적용하여 업데이트된 앱을 게시하세요.
minSdkVersion에서 지원하지 않는 API를 실행하기 전에 시스템 API 수준을 확인하는 조건을 코드에 추가하여 이전 버전을 지원하면서 Android API를 사용할 수 있습니다.
하위 호환성 유지에 관한 자세한 내용은 다양한 플랫폼 버전 지원을 참고하세요.
API 수준의 작동 방식에 관한 자세한 내용은 API 수준이란 무엇인가요?를 참고하세요.
지문 인증
이 출시에서는 지원되는 기기에서 지문 스캔을 사용하여 사용자를 인증할 수 있는 새로운 API를 제공합니다. Android 키 저장소 시스템과 함께 이러한 API를 사용하세요.
지문 스캔을 통해 사용자를 인증하려면 새 FingerprintManager 클래스의 인스턴스를 가져오고 authenticate() 메서드를 호출합니다. 앱은 지문 센서가 있는 호환 기기에서 실행되어야 합니다. 앱에서 지문 인증 흐름의 사용자 인터페이스를 구현하고 UI에서 표준 Android 지문 아이콘을 사용해야 합니다.
Android 지문 아이콘 (c_fp_40px.png)은 생체 인식 인증 샘플에 포함되어 있습니다.
지문 인증을 사용하는 여러 앱을 개발하는 경우 각 앱이 사용자의 지문을 독립적으로 인증해야 합니다.
앱에서 이 기능을 사용하려면 먼저 매니페스트에 USE_FINGERPRINT 권한을 추가하세요.
<uses-permission android:name="android.permission.USE_FINGERPRINT" />
지문 인증의 앱 구현을 보려면 생체 인식 인증 샘플을 참고하세요. 이러한 인증 API를 다른 Android API와 함께 사용하는 방법을 보여주는 데모는 지문 및 결제 API 동영상을 참고하세요.
이 기능을 테스트하는 경우 다음 단계를 따르세요.
- 아직 설치하지 않았다면 Android SDK 도구 버전 24.3을 설치합니다.
- 설정 > 보안 > 지문으로 이동하여 에뮬레이터에 새 지문을 등록한 다음 등록 안내를 따릅니다.
- 다음 명령어를 사용하여 에뮬레이터로 지문 터치 이벤트를 에뮬레이트합니다. 잠금 화면이나 앱에서 지문 터치 이벤트를 에뮬레이션하려면 동일한 명령어를 사용하세요.
adb -e emu finger touch <finger_id>
Windows에서는
telnet 127.0.0.1 <emulator-id>를 실행한 후finger touch <finger_id>를 실행해야 할 수도 있습니다.
사용자 인증 정보 확인
앱은 사용자가 마지막으로 기기를 잠금 해제한 시점을 기준으로 사용자를 인증할 수 있습니다. 이 기능을 사용하면 사용자가 앱별 비밀번호를 추가로 기억하지 않아도 되며 개발자가 자체 인증 사용자 인터페이스를 구현할 필요가 없습니다. 앱은 사용자 인증을 위해 공개 키 또는 보안 비밀 키 구현과 함께 이 기능을 사용해야 합니다.
사용자가 성공적으로 인증된 후 동일한 키를 재사용할 수 있는 제한 시간을 설정하려면 KeyGenerator 또는 KeyPairGenerator를 설정할 때 새 setUserAuthenticationValidityDurationSeconds() 메서드를 호출하세요.
재인증 대화상자를 과도하게 표시하지 마세요. 앱은 먼저 암호화 객체를 사용해 보고 제한 시간이 만료되면 createConfirmDeviceCredentialIntent() 메서드를 사용하여 앱 내에서 사용자를 재인증해야 합니다.
앱 연결
이 출시에서는 더 강력한 앱 링크를 제공하여 Android의 인텐트 시스템을 개선합니다. 이 기능을 사용하면 앱을 소유한 웹 도메인과 연결할 수 있습니다. 이 연결을 기반으로 플랫폼은 특정 웹 링크를 처리하는 데 사용할 기본 앱을 결정하고 사용자에게 앱을 선택하라는 메시지를 건너뛸 수 있습니다. 이 기능을 구현하는 방법을 알아보려면 App Links 처리를 참고하세요.
앱 자동 백업
이제 시스템에서 앱의 자동 전체 데이터 백업 및 복원을 실행합니다. 이 동작을 사용 설정하려면 앱이 Android 6.0 (API 수준 23)을 타겟팅해야 합니다. 추가 코드를 추가할 필요는 없습니다. 사용자가 Google 계정을 삭제하면 백업 데이터도 삭제됩니다. 이 기능의 작동 방식과 파일 시스템에서 백업할 항목을 구성하는 방법을 알아보려면 앱 자동 백업 구성을 참고하세요.
Direct Share
이번 출시에서는 사용자가 직관적이고 빠르게 공유할 수 있는 API를 제공합니다. 이제 앱에서 특정 활동을 실행하는 직접 공유 타겟을 정의할 수 있습니다. 이러한 직접 공유 타겟은 공유 메뉴를 통해 사용자에게 노출됩니다. 이 기능을 사용하면 사용자가 다른 앱 내에서 연락처와 같은 타겟에 콘텐츠를 공유할 수 있습니다. 예를 들어 직접 공유 타겟은 다른 소셜 네트워크 앱에서 활동을 실행할 수 있으며, 이를 통해 사용자는 해당 앱에서 특정 친구나 커뮤니티에 콘텐츠를 직접 공유할 수 있습니다.
직접 공유 타겟을 사용 설정하려면 ChooserTargetService 클래스를 확장하는 클래스를 정의해야 합니다. 매니페스트에서 서비스를 선언합니다. 이 선언 내에서 BIND_CHOOSER_TARGET_SERVICE 권한과 SERVICE_INTERFACE 작업을 사용하는 인텐트 필터를 지정합니다.
다음 예는 매니페스트에서 ChooserTargetService를 선언하는 방법을 보여줍니다.
<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>
ChooserTargetService에 노출하려는 각 활동에 대해 앱 매니페스트에 이름이 "android.service.chooser.chooser_target_service"인 <meta-data> 요소를 추가합니다.
<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>
음성 상호작용
이 출시에서는 새로운 음성 상호작용 API를 제공합니다. 이 API는 음성 작업과 함께 앱에 대화형 음성 환경을 빌드할 수 있도록 지원합니다. isVoiceInteraction() 메서드를 호출하여 음성 작업이 활동을 트리거했는지 확인합니다. 이 경우 앱은 VoiceInteractor 클래스를 사용하여 사용자에게 음성 확인을 요청하고, 옵션 목록에서 선택하는 등의 작업을 할 수 있습니다.
대부분의 음성 상호작용은 사용자 음성 작업에서 시작됩니다. 하지만 음성 상호작용 활동은 사용자 입력 없이 시작될 수도 있습니다. 예를 들어 음성 상호작용을 통해 실행된 다른 앱도 음성 상호작용을 실행하는 인텐트를 전송할 수 있습니다. 사용자 음성 쿼리에서 활동이 시작되었는지 아니면 다른 음성 상호작용 앱에서 시작되었는지 확인하려면 isVoiceInteractionRoot() 메서드를 호출하세요. 다른 앱에서 활동을 실행한 경우 메서드는 false를 반환합니다. 그런 다음 앱에서 사용자에게 이 작업을 의도했는지 확인하라는 메시지를 표시할 수 있습니다.
음성 작업 구현에 대해 자세히 알아보려면 음성 작업 개발자 사이트를 참고하세요.
Assist API
이번 출시에서는 사용자가 어시스턴트를 통해 앱과 상호작용할 수 있는 새로운 방법을 제공합니다. 이 기능을 사용하려면 사용자가 어시스턴트가 현재 컨텍스트를 사용하도록 설정해야 합니다. 사용 설정되면 사용자는 홈 버튼을 길게 눌러 모든 앱 내에서 어시스턴트를 호출할 수 있습니다.
FLAG_SECURE 플래그를 설정하여 앱이 현재 컨텍스트를 어시스턴트와 공유하지 않도록 선택할 수 있습니다. 플랫폼에서 어시스턴트에게 전달하는 표준 정보 외에도 앱은 새로운 AssistContent 클래스를 사용하여 추가 정보를 공유할 수 있습니다.
어시스턴트에게 앱의 추가 컨텍스트를 제공하려면 다음 단계를 따르세요.
Application.OnProvideAssistDataListener인터페이스를 구현합니다.registerOnProvideAssistDataListener()를 사용하여 이 리스너를 등록합니다.- 활동별 컨텍스트 정보를 제공하려면
onProvideAssistData()콜백과 선택적으로 새onProvideAssistContent()콜백을 재정의합니다.
채택 가능한 저장소 기기
이번 출시를 통해 사용자는 SD 카드와 같은 외부 저장소 기기를 채택할 수 있습니다. 외부 저장 장치를 채택하면 기기가 암호화되고 내부 저장소처럼 작동하도록 포맷됩니다. 이 기능을 사용하면 사용자가 앱과 해당 앱의 비공개 데이터를 스토리지 기기 간에 이동할 수 있습니다. 앱을 이동할 때 시스템은 매니페스트의 android:installLocation 환경설정을 따릅니다.
앱이 다음 API 또는 필드에 액세스하는 경우 앱이 내부 및 외부 저장소 기기 간에 이동할 때 반환되는 파일 경로가 동적으로 변경됩니다. 파일 경로를 빌드할 때는 항상 이러한 API를 동적으로 호출하는 것이 좋습니다. 하드 코딩된 파일 경로를 사용하거나 이전에 빌드된 정규화된 파일 경로를 유지하면 안 됩니다.
Context메서드:ApplicationInfofields:
이 기능을 디버그하려면 다음 명령어를 실행하여 USB OTG 케이블을 통해 Android 기기에 연결된 USB 드라이브의 채택을 사용 설정하면 됩니다.
$ adb shell sm set-force-adoptable true
알림
이 출시에서는 알림에 다음과 같은 API 변경사항이 추가되었습니다.
- 새 알람만 방해 금지 모드에 해당하는 새
INTERRUPTION_FILTER_ALARMS필터 수준 - 사용자가 예약한 리마인더를 다른 이벤트(
CATEGORY_EVENT) 및 알람(CATEGORY_ALARM)과 구분하는 데 사용되는 새로운CATEGORY_REMINDER카테고리 값입니다. setSmallIcon()및setLargeIcon()메서드를 통해 알림에 연결할 수 있는 새로운Icon클래스 마찬가지로addAction()메서드는 이제 드로어블 리소스 ID 대신Icon객체를 허용합니다.- 앱이 현재 활성 상태인 알림을 확인할 수 있는 새로운
getActiveNotifications()메서드
블루투스 스타일러스 지원
이 출시에서는 블루투스 스타일러스를 사용한 사용자 입력 지원이 개선되었습니다. 사용자는 호환되는 블루투스 스타일러스를 휴대전화나 태블릿과 페어링하고 연결할 수 있습니다. 연결된 동안 터치 스크린의 위치 정보는 스타일러스의 압력 및 버튼 정보와 융합되어 터치 스크린만 사용할 때보다 더 넓은 범위의 표현을 제공합니다. 앱은 활동에 View.OnContextClickListener 및 GestureDetector.OnContextClickListener 객체를 등록하여 스타일러스 버튼 누름을 수신하고 보조 작업을 실행할 수 있습니다.
MotionEvent 메서드와 상수를 사용하여 스타일러스 버튼 상호작용을 감지합니다.
- 사용자가 버튼이 있는 스타일러스를 앱의 화면에서 터치하면
getTooltype()메서드가TOOL_TYPE_STYLUS를 반환합니다. - Android 6.0 (API 수준 23)을 타겟팅하는 앱의 경우 사용자가 기본 스타일러스 버튼을 누르면
getButtonState()메서드가BUTTON_STYLUS_PRIMARY를 반환합니다. 스타일러스에 두 번째 버튼이 있는 경우 사용자가 버튼을 누르면 동일한 메서드가BUTTON_STYLUS_SECONDARY를 반환합니다. 사용자가 두 버튼을 동시에 누르면 메서드는 두 값을 OR 연산한 값(BUTTON_STYLUS_PRIMARY|BUTTON_STYLUS_SECONDARY)을 반환합니다. -
낮은 플랫폼 버전을 타겟팅하는 앱의 경우
getButtonState()메서드는BUTTON_SECONDARY(기본 스타일러스 버튼 누름) 또는BUTTON_TERTIARY(보조 스타일러스 버튼 누름) 또는 둘 다를 반환합니다.
저전력 블루투스 검색 개선
앱이 저전력 블루투스 검색을 실행하는 경우 새 setCallbackType() 메서드를 사용하여 설정된 ScanFilter과 일치하는 광고 패킷을 처음 찾거나 오랜만에 볼 때 시스템이 콜백을 알리도록 지정하세요. 이 스캔 접근 방식은 이전 플랫폼 버전에서 제공되는 방식보다 전력 효율성이 높습니다.
핫스팟 2.0 버전 1 지원
이 출시에서는 Nexus 6 및 Nexus 9 기기에서 핫스팟 2.0 버전 1 사양을 지원합니다. 앱에서 핫스팟 2.0 사용자 인증 정보를 프로비저닝하려면 setPlmn() 및 setRealm()와 같은 WifiEnterpriseConfig 클래스의 새 메서드를 사용하세요. WifiConfiguration 객체에서 FQDN 및 providerFriendlyName 필드를 설정할 수 있습니다.
새 isPasspointNetwork() 메서드는 감지된 네트워크가 핫스팟 2.0 액세스 포인트를 나타내는지 나타냅니다.
4K 디스플레이 모드
이제 플랫폼에서 앱이 호환되는 하드웨어에서 디스플레이 해상도를 4K 렌더링으로 업그레이드하도록 요청할 수 있습니다. 현재 실제 해상도를 쿼리하려면 새로운 Display.Mode API를 사용하세요. UI가 더 낮은 논리적 해상도로 그려지고 더 큰 물리적 해상도로 업스케일되는 경우 getPhysicalWidth() 메서드가 반환하는 물리적 해상도가 getSize()에서 보고하는 논리적 해상도와 다를 수 있습니다.
앱이 실행될 때 앱의 창의 preferredDisplayModeId 속성을 설정하여 시스템에 앱의 실제 해상도를 변경하도록 요청할 수 있습니다. 이 기능은 4K 디스플레이 해상도로 전환하려는 경우에 유용합니다. 4K 디스플레이 모드에서 UI는 원래 해상도 (예: 1080p)로 계속 렌더링되고 4K로 업스케일되지만 SurfaceView 객체는 기본 해상도로 콘텐츠를 표시할 수 있습니다.
테마 지정 가능한 ColorStateList
이제 Android 6.0 (API 수준 23)에서 실행되는 기기의 ColorStateList에서 테마 속성이 지원됩니다. Resources.getColorStateList() 및 Resources.getColor() 메서드가 지원 중단되었습니다. 이러한 API를 호출하는 경우 대신 새 Context.getColorStateList() 또는 Context.getColor() 메서드를 호출하세요. 이러한 메서드는 ContextCompat를 통해 v4 appcompat 라이브러리에서도 사용할 수 있습니다.
오디오 기능
이 출시에서는 다음과 같은 Android의 오디오 처리 기능이 개선되었습니다.
- 새
android.media.midiAPI를 사용하여 MIDI 프로토콜 지원 이러한 API를 사용하여 MIDI 이벤트를 보내고 받습니다. - 디지털 오디오 캡처 및 재생 객체를 각각 만들고 오디오 소스 및 싱크 속성을 구성하여 시스템 기본값을 재정의하는 새로운
AudioRecord.Builder및AudioTrack.Builder클래스 - 오디오 및 입력 기기를 연결하기 위한 API 후크 이는 앱에서 사용자가 Android TV에 연결된 게임 컨트롤러나 리모컨에서 음성 검색을 시작할 수 있는 경우에 특히 유용합니다. 사용자가 검색을 시작하면 시스템에서 새로운
onSearchRequested()콜백을 호출합니다. 사용자의 입력 기기에 내장 마이크가 있는지 확인하려면 해당 콜백에서InputDevice객체를 가져온 다음 새hasMicrophone()메서드를 호출합니다. - 현재 시스템에 연결된 모든 오디오 기기의 목록을 가져올 수 있는 새로운
getDevices()메서드 오디오 기기가 연결되거나 연결 해제될 때 시스템이 앱에 알리도록 하려면AudioDeviceCallback객체를 등록해도 됩니다.
동영상 기능
이 출시 버전에서는 다음과 같은 동영상 처리 API에 새로운 기능이 추가되었습니다.
- 애플리케이션이 오디오 및 동영상 스트림을 동기식으로 렌더링하도록 지원하는 새로운
MediaSync클래스 오디오 버퍼는 비차단 방식으로 제출되고 콜백을 통해 반환됩니다. 동적 재생 속도도 지원합니다. - 새로운
EVENT_SESSION_RECLAIMED이벤트로, 앱에서 연 세션이 리소스 관리자에 의해 회수되었음을 나타냅니다. 앱에서 DRM 세션을 사용하는 경우 이 이벤트를 처리하고 회수된 세션을 사용하지 않도록 해야 합니다. - 새
ERROR_RECLAIMED오류 코드로, 리소스 관리자가 코덱에서 사용한 미디어 리소스를 회수했음을 나타냅니다. 이 예외를 제외하고 코덱은 터미널 상태로 이동했으므로 해제해야 합니다. - 지원되는 최대 동시 코덱 인스턴스 수에 관한 힌트를 가져오는 새로운
getMaxSupportedInstances()인터페이스 - 빠른 모션 또는 슬로우 모션 재생을 위해 미디어 재생 속도를 설정하는 새로운
setPlaybackParams()메서드 또한 동영상과 함께 오디오 재생을 자동으로 늘리거나 빠르게 합니다.
카메라 기능
이 출시에는 카메라의 손전등에 액세스하고 이미지의 카메라 재처리를 위한 다음 새 API가 포함됩니다.
손전등 API
카메라 기기에 플래시 장치가 있는 경우 setTorchMode() 메서드를 호출하여 카메라 기기를 열지 않고 플래시 장치의 토치 모드를 사용 설정하거나 사용 중지할 수 있습니다. 앱에 플래시 장치나 카메라 기기의 독점 소유권이 없습니다. 카메라 기기를 사용할 수 없게 되거나 토치를 켠 상태로 유지하는 다른 카메라 리소스를 사용할 수 없게 되면 토치 모드가 꺼지고 사용할 수 없게 됩니다. 다른 앱도 setTorchMode()를 호출하여 손전등 모드를 끌 수 있습니다. 손전등 모드를 사용 설정한 마지막 앱이 닫히면 손전등 모드가 사용 중지됩니다.
registerTorchCallback() 메서드를 호출하여 손전등 모드 상태에 관한 알림을 받을 콜백을 등록할 수 있습니다. 콜백이 처음 등록되면 플래시 장치가 있는 현재 알려진 모든 카메라 기기의 손전등 모드 상태와 함께 즉시 호출됩니다. 손전등 모드가 성공적으로 켜지거나 꺼지면 onTorchModeChanged() 메서드가 호출됩니다.
Reprocessing API
Camera2 API가 YUV 및 비공개 불투명 형식 이미지 재처리를 지원하도록 확장되었습니다. 이러한 재처리 기능을 사용할 수 있는지 확인하려면 getCameraCharacteristics()를 호출하고 REPROCESS_MAX_CAPTURE_STALL 키를 확인하세요. 기기에서 재처리를 지원하는 경우 createReprocessableCaptureSession()를 호출하여 재처리 가능한 카메라 캡처 세션을 만들고 입력 버퍼 재처리 요청을 만들 수 있습니다.
ImageWriter 클래스를 사용하여 입력 버퍼 흐름을 카메라 재처리 입력에 연결합니다. 빈 버퍼를 가져오려면 다음 프로그래밍 모델을 따르세요.
dequeueInputImage()메서드를 호출합니다.- 입력 버퍼에 데이터를 채웁니다.
queueInputImage()메서드를 호출하여 버퍼를 카메라에 전송합니다.
ImageWriter 객체를 PRIVATE 이미지와 함께 사용하는 경우 앱이 이미지 데이터에 직접 액세스할 수 없습니다. 대신 버퍼 복사 없이 queueInputImage() 메서드를 호출하여 PRIVATE 이미지를 ImageWriter에 직접 전달합니다.
이제 ImageReader 클래스가 PRIVATE 형식 이미지 스트림을 지원합니다. 이 지원을 통해 앱은 ImageReader 출력 이미지의 순환 이미지 대기열을 유지하고 하나 이상의 이미지를 선택하여 카메라 재처리를 위해 ImageWriter에 전송할 수 있습니다.
Android for Work 기능
이 출시에는 Android for Work를 위한 다음과 같은 새로운 API가 포함되어 있습니다.
- 회사 소유의 특정 용도 기기에 대한 향상된 제어: 이제 기기 소유자가 다음 설정을 제어하여 회사 소유의 특정 용도 (COSU) 기기 관리를 개선할 수 있습니다.
setKeyguardDisabled()메서드로 키가드를 사용 중지하거나 다시 사용 설정합니다.setStatusBarDisabled()메서드를 사용하여 상태 표시줄 (빠른 설정, 알림, Google Now를 실행하는 탐색 위로 스와이프 동작 포함)을 사용 중지하거나 다시 사용 설정합니다.UserManager상수DISALLOW_SAFE_BOOT를 사용하여 보안 부팅을 사용 중지하거나 다시 사용 설정합니다.STAY_ON_WHILE_PLUGGED_IN상수를 사용하여 전원이 연결되어 있는 동안 화면이 꺼지지 않도록 합니다.
- 기기 소유자의 앱 자동 설치 및 제거: 이제 기기 소유자는
PackageInstallerAPI를 사용하여 Google Play for Work와 관계없이 애플리케이션을 자동으로 설치하고 제거할 수 있습니다. 이제 사용자 상호작용 없이 앱을 가져오고 설치하는 기기 소유자를 통해 기기를 프로비저닝할 수 있습니다. 이 기능은 Google 계정을 활성화하지 않고 키오스크나 기타 기기의 원터치 프로비저닝을 사용 설정하는 데 유용합니다. - 자동 엔터프라이즈 인증서 액세스: 이제 사용자가 인증서를 선택하라는 메시지가 표시되기 전에 앱이
choosePrivateKeyAlias()를 호출하면 프로필 또는 기기 소유자가onChoosePrivateKeyAlias()메서드를 호출하여 요청 애플리케이션에 별칭을 자동으로 제공할 수 있습니다. 이 기능을 사용하면 사용자 상호작용 없이 관리 앱에 인증서 액세스 권한을 부여할 수 있습니다. - 시스템 업데이트 자동 수락
setSystemUpdatePolicy()로 시스템 업데이트 정책을 설정하면 기기 소유자가 이제 키오스크 기기의 경우와 같이 시스템 업데이트를 자동으로 수락하거나 업데이트를 연기하고 사용자가 최대 30일 동안 업데이트를 가져가지 못하도록 할 수 있습니다. 또한 관리자는 업데이트를 적용해야 하는 일일 시간대(예: 키오스크 기기를 사용하지 않는 시간)를 설정할 수 있습니다. 시스템 업데이트가 제공되면 시스템은 기기 정책 컨트롤러 앱이 시스템 업데이트 정책을 설정했는지 확인하고 그에 따라 동작합니다. -
위임된 인증서 설치: 이제 프로필 또는 기기 소유자가 서드 파티 앱에 다음
DevicePolicyManager인증서 관리 API를 호출할 수 있는 기능을 부여할 수 있습니다. - 데이터 사용량 추적. 이제 프로필 또는 기기 소유자는 새로운
NetworkStatsManager메서드를 사용하여 설정 > 데이터 사용량에 표시되는 데이터 사용량 통계를 쿼리할 수 있습니다. 프로필 소유자에게는 관리하는 프로필의 데이터를 쿼리할 권한이 자동으로 부여되고 기기 소유자에게는 관리되는 기본 사용자의 사용 데이터에 대한 액세스 권한이 부여됩니다. - 런타임 권한 관리:
프로필 또는 기기 소유자는
setPermissionPolicy()를 사용하여 모든 애플리케이션의 모든 런타임 요청에 대한 권한 정책을 설정하여 사용자에게 권한 부여를 요청하거나 자동으로 권한을 부여하거나 거부할 수 있습니다. 후자 정책이 설정된 경우 사용자는 설정의 앱 권한 화면 내에서 프로필 또는 기기 소유자가 선택한 항목을 수정할 수 없습니다. - 설정의 VPN: 이제 VPN 앱이 설정 > 더보기 > VPN에 표시됩니다. 또한 VPN 사용과 함께 표시되는 알림이 이제 VPN 구성 방식에 따라 달라집니다. 프로필 소유자의 경우 VPN이 관리 프로필, 개인 프로필 또는 둘 다에 대해 구성되었는지에 따라 알림이 달라집니다. 기기 소유자의 경우 VPN이 전체 기기에 구성되었는지 여부에 따라 알림이 달라집니다.
- 직장 상태 알림: 이제 관리 프로필의 앱이 포그라운드에서 활동을 하면 상태 표시줄 서류 가방 아이콘이 표시됩니다. 또한 관리 프로필의 앱 활동으로 직접 기기가 잠금 해제되면 사용자가 직장 프로필에 있음을 알리는 토스트가 표시됩니다.