Android 6.0 API

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를 제공합니다. 이 API는 Android Keystore 시스템과 함께 사용합니다.

지문 스캔을 통해 사용자를 인증하려면 새 FingerprintManager 클래스의 인스턴스를 가져와 authenticate() 메서드를 호출합니다. 앱은 지문 센서가 있는 호환되는 기기에서 실행되어야 합니다. 앱에서 지문 인증 흐름에 대한 사용자 인터페이스를 구현하고 UI에 표준 Android 지문 아이콘을 사용해야 합니다. Android 지문 아이콘 (c_fp_40px.png)은 생체 인식 인증 샘플에 포함되어 있습니다. 지문 인증을 사용하는 여러 앱을 개발하고 있는 경우 각 앱은 사용자의 지문을 독립적으로 인증해야 합니다.

앱에서 이 기능을 사용하려면 먼저 매니페스트에 USE_FINGERPRINT 권한을 추가합니다.

<uses-permission
        android:name="android.permission.USE_FINGERPRINT" />
지문 인증 기능을 보여주는 휴대기기

지문 인증의 앱 구현을 확인하려면 생체 인식 인증 샘플을 참고하세요. 이러한 인증 API를 다른 Android API와 함께 사용하는 방법을 보려면 지문 및 결제 API 동영상을 참조하세요.

이 기능을 테스트하는 경우, 다음 단계를 따릅니다.

  1. Android SDK 도구 수정 버전 24.3을 설치합니다(아직 설치하지 않은 경우).
  2. Settings > Security > Fingerprint로 이동한 후 등록 안내에 따라 에뮬레이터에 새 지문을 등록합니다.
  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의 인텐트 시스템을 강화합니다. 이 기능을 이용하면 앱을 여러분이 소유하고 있는 웹 도메인과 연관시킬 수 있습니다. 이 연결을 기반으로 플랫폼은 특정 웹 링크를 처리하는 데 사용할 기본 앱을 결정하고 사용자에게 앱을 선택하라는 메시지를 건너뛸 수 있습니다. 이 기능을 구현하는 방법을 알아보려면 앱 링크 처리를 참고하세요.

앱용 자동 백업

시스템에서 이제 앱에 대한 완전한 데이터 백업과 복원을 자동으로 수행합니다. 이 동작을 사용 설정하려면 앱이 Android 6.0 (API 수준 23)을 타겟팅해야 합니다. 추가 코드를 추가하지 않아도 됩니다. 사용자가 Google 계정을 삭제하면 계정의 백업 데이터도 함께 삭제됩니다. 이 기능의 작동 원리와 파일 시스템에서 백업할 항목을 구성하는 방법에 대해 알아보려면 앱용 자동 백업 구성을 참고하세요.

직접 공유

직접 공유 기능을 표시하는 휴대기기 하단

이 릴리스에서는 사용자가 공유 기능을 간편하고 신속하게 이용할 수 있도록 해주는 API를 제공합니다. 이제 앱에서 특정 활동을 시작하는 직접 공유 대상을 정의할 수 있습니다. 이러한 직접 공유 대상은 Share 메뉴를 통해 사용자에게 노출됩니다. 이 기능을 사용하면 사용자가 연락처 등 다른 앱 내의 대상과 콘텐츠를 공유할 수 있습니다. 예를 들어 직접 공유 대상이 다른 소셜 네트워크 앱에서 액티비티를 시작하면 사용자가 해당 앱에 있는 특정 친구나 커뮤니티와 콘텐츠를 직접 공유할 수 있습니다.

직접 공유 타겟을 사용 설정하려면 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를 제공합니다. isVoiceInteraction() 메서드를 호출하여 음성 작업이 활동을 트리거했는지 확인합니다. 이 경우에 해당되면 앱이 VoiceInteractor 클래스를 사용하여 사용자로부터 음성 확인을 요청하거나, 옵션 목록에서 선택하는 등 여러 가지 일을 할 수 있습니다.

대부분 음성 상호작용은 사용자 음성 액션에서 발생합니다. 그러나 음성 상호작용 활동은 사용자 입력 없이도 시작될 수 있습니다. 예를 들어 음성 상호작용을 통해 시작된 다른 앱도 음성 상호작용을 시작하기 위한 인텐트를 전송할 수 있습니다. 사용자 음성 쿼리나 다른 음성 상호작용 앱에서 액티비티가 시작되었는지 확인하려면 isVoiceInteractionRoot() 메서드를 호출합니다. 다른 앱에서 활동을 시작했다면 메서드는 false를 반환합니다. 그러면 앱에서 사용자에게 이 작업을 의도한 것인지 확인하는 메시지를 표시할 수 있습니다.

음성 액션 구현에 대한 자세한 내용은 음성 액션 개발자 사이트를 참고하세요.

Assist API

이 릴리스에서는 사용자가 도우미를 통해 앱에 참여하게 하는 새로운 방식을 제시합니다. 이 기능을 사용하려면 사용자가 현재 컨텍스트를 사용하도록 어시스턴트를 사용 설정해야 합니다. 일단 활성화하고 나면 Home 버튼을 길게 눌러 해당 도우미를 어느 앱에서나 불러낼 수 있습니다.

앱이 FLAG_SECURE 플래그를 설정하여 현재 컨텍스트를 어시스턴트와 공유하지 않도록 선택할 수 있습니다. 플랫폼이 어시스턴트에게 전달하는 일반적인 일련의 정보 외에도 앱은 새 AssistContent 클래스를 사용하여 추가 정보를 공유할 수 있습니다.

도우미에게 앱에서 가져온 추가 컨텍스트를 제공하려면, 다음 단계를 따릅니다.

  1. Application.OnProvideAssistDataListener 인터페이스를 구현합니다.
  2. registerOnProvideAssistDataListener()를 사용하여 이 리스너를 등록합니다.
  3. 활동별로 상황에 맞는 정보를 제공하려면 onProvideAssistData() 콜백을 재정의하고, 필요한 경우 새로운 onProvideAssistContent() 콜백도 재정의합니다.

채택 가능한 저장소 기기

이 버전에서는 사용자가 SD 카드와 같은 외부 저장소 기기를 채택할 수 있습니다. 외부 저장소 기기를 채택하면 기기를 암호화하고 포맷하여 내부 저장소처럼 작동하도록 합니다. 이 기능을 사용하면 사용자가 앱과 해당 앱의 비공개 데이터를 여러 저장소 기기 사이에서 이동할 수 있습니다. 앱을 이동하는 경우, 시스템은 매니페스트의 android:installLocation 기본 설정을 사용합니다.

앱이 다음 API 또는 필드에 액세스하는 경우 앱이 내부 및 외부 저장소 기기 사이를 이동할 때 API 또는 필드가 확인하는 파일 경로가 동적으로 바뀐다는 점에 유의하세요. 파일 경로를 빌드할 때 항상 이 API를 동적으로 호출할 것을 적극 권장합니다. 하드코드된 경로를 사용하거나 이전에 빌드된 정규화된 파일 경로를 유지하지 마십시오.

이 기능을 디버그하려면 다음 명령어를 실행하여 USB OTG (On-The-Go) 케이블을 통해 Android 기기에 연결된 USB 드라이브 채택을 사용 설정하면 됩니다.

$ adb shell sm set-force-adoptable true

알림

이 릴리스에서는 알림 기능에 다음과 같은 API 변경이 추가되었습니다.

  • 새로운 알람 전용 방해 금지 모드에 해당하는 새로운 INTERRUPTION_FILTER_ALARMS 필터 수준입니다.
  • 사용자가 예약한 리마인더를 다른 이벤트(CATEGORY_EVENT) 및 알람(CATEGORY_ALARM)과 구분하는 데 사용되는 새 CATEGORY_REMINDER 카테고리 값이 추가되었습니다.
  • Icon 클래스가 추가되었습니다. 이것은 setSmallIcon()setLargeIcon() 메서드를 통해 알림에 첨부할 수 있습니다. 마찬가지로 이제 addAction() 메서드는 드로어블 리소스 ID 대신 Icon 객체를 받아들입니다.
  • 새로운 getActiveNotifications() 메서드를 사용하면 앱이 현재 활성 상태인 알림을 확인할 수 있습니다.

블루투스 스타일러스 지원

이 릴리스에서는 블루투스 스타일러스를 사용하는 사용자 입력에 대한 지원이 개선되었습니다. 사용자는 호환되는 블루투스 스타일러스를 휴대전화나 태블릿과 페어링하고 연결할 수 있습니다. 연결된 동안 터치 스크린에서 가져온 위치 정보가 스타일러스에서 가져온 압력 및 버튼 정보와 합쳐져 하나의 터치 스크린을 사용할 때보다 훨씬 폭넓은 표현을 제공합니다. 앱이 스타일러스 버튼 누르기를 수신 대기하고 보조 작업을 수행하도록 하려면, 액티비티에 View.OnContextClickListenerGestureDetector.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 사용자 인증 정보를 프로비저닝하려면 WifiEnterpriseConfig 클래스의 새 메서드(예: setPlmn()setRealm())를 사용하세요. WifiConfiguration 객체에서 FQDNproviderFriendlyName 필드를 설정할 수 있습니다. 새 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() 메서드를 호출하세요. 이 두 메서드는 v4 AppCompat 라이브러리에서도 ContextCompat를 통해 이용할 수 있습니다.

오디오 기능

이 릴리스에서는 Android에서의 오디오 처리에 개선점을 더했습니다.

  • 새로운 android.media.midi API를 사용하여 MIDI 프로토콜을 지원합니다. 이와 같은 API를 사용하면 MIDI 이벤트를 전송 및 수신할 수 있습니다.
  • AudioRecord.BuilderAudioTrack.Builder 클래스를 추가하여 각각 디지털 오디오 캡처와 재생 객체를 생성하고, 오디오 소스와 싱크 속성을 구성하여 시스템 기본 설정을 재정의하도록 하였습니다.
  • 오디오 및 입력 기기를 연관시키기 위한 API Hook이 추가되었습니다. 이 기능은 특히 앱이 사용자에게 게임 컨트롤러 또는 Android TV에 연결된 리모컨에서 음성 검색을 시작하는 기능을 제공하는 경우에 유용합니다. 사용자가 검색을 시작하면 시스템이 새 onSearchRequested() 콜백을 호출합니다. 사용자의 입력 기기에 마이크가 내장되어 있는지 확인하려면 해당 콜백에서 InputDevice 객체를 가져온 다음 새 hasMicrophone() 메서드를 호출합니다.
  • 현재 시스템에 연결된 모든 오디오 기기의 목록을 검색할 수 있는 새 getDevices() 메서드 오디오 기기가 연결되거나 연결 해제될 때 시스템에서 앱에 알리도록 하려면 AudioDeviceCallback 객체를 등록할 수도 있습니다.

동영상 기능

이 릴리스에서는 비디오 처리 API에 새로운 기능을 추가합니다.

  • 애플리케이션이 오디오와 비디오 스트림을 동기적으로 렌더링하는 데 도움이 되는 새로운 MediaSync 클래스를 추가했습니다. 오디오 버퍼는 비블로킹 방식으로 제출되고 콜백을 통해 반환됩니다. 이것은 동적 재생 속도도 지원합니다.
  • EVENT_SESSION_RECLAIMED 이벤트를 추가하여 앱이 연 세션을 리소스 관리자가 회수했음을 나타낼 수 있습니다. 앱이 DRM 세션을 사용하는 경우 이 이벤트를 처리해야 하고 회수된 세션을 사용하지 않도록 해야 합니다.
  • ERROR_RECLAIMED 오류 코드를 추가했습니다. 이것은 코덱이 사용하는 미디어 리소스를 리소스 관리자가 회수했음을 나타냅니다. 이런 경우를 예외로 하고, 코덱은 종료 상태로 이동하면서 해제되어야 합니다.
  • 지원되는 동시 코덱 인스턴스의 최대 수에 대한 힌트를 얻을 수 있는 새 getMaxSupportedInstances() 인터페이스
  • 빠른 재생 또는 느린 동작 재생에 대한 미디어 재생 속도를 설정하는 새 setPlaybackParams() 메서드 또한 동영상과 함께 오디오 재생을 자동으로 늘리거나 속도를 높이기도 합니다.

카메라 기능

이 릴리스에는 다음과 같은 새 API를 제공하여 카메라의 플래시에 액세스하고 이미지를 재처리하는 카메라에 액세스할 수 있도록 했습니다.

Flashlight API

카메라 기기에 플래시 장치가 있는 경우, setTorchMode() 메서드를 호출하여 카메라 기기를 열지 않고도 플래시 장치의 토치 모드를 켜거나 끌 수 있습니다. 앱에는 플래시 장치 또는 카메라 기기에 대한 독점적인 소유권이 없습니다. 카메라 기기를 이용할 수 없게 될 때마다, 또는 Torch 모드를 켜진 상태로 유지하던 다른 카메라 리소스를 이용할 수 없게 되면 Torch 모드가 꺼지고 이용할 수 없게 됩니다. 다른 앱도 setTorchMode()를 호출하여 Torch 모드를 끌 수 있습니다. 토치 모드를 켠 마지막 앱이 닫히면 토치 모드가 꺼집니다.

registerTorchCallback() 메서드를 호출하여 손전등 모드 상태에 관해 알림을 받기 위한 콜백을 등록할 수 있습니다. 콜백을 처음 등록하면 플래시 장치가 있는 현재 알려진 모든 카메라 기기의 토치 모드 상태로 즉시 호출됩니다. Torch 모드가 성공적으로 켜지거나 꺼지면 onTorchModeChanged() 메서드가 호출됩니다.

Reprocessing API

YUV 및 비공개 불투명 형식 이미지 재처리를 지원하도록 Camera2 API가 확장되었습니다. 이러한 재처리 기능을 사용할 수 있는지 확인하려면 getCameraCharacteristics()를 호출하고 REPROCESS_MAX_CAPTURE_STALL 키를 확인합니다. 기기가 재처리를 지원하는 경우, 재처리 가능한 카메라 캡처 세션을 생성하려면 createReprocessableCaptureSession()를 호출하고 입력 버퍼 재처리를 위한 요청을 생성하면 됩니다.

ImageWriter 클래스를 사용하여 카메라 재처리 입력에 입력 버퍼 흐름을 연결합니다. 빈 버퍼를 가져오려면 다음과 같은 프로그래밍 모델을 따르면 됩니다.

  1. dequeueInputImage() 메서드를 호출합니다.
  2. 입력 버퍼에 이 데이터를 채웁니다.
  3. queueInputImage() 메서드를 호출하여 해당 버퍼를 카메라에 전송합니다.

ImageWriter 객체를 PRIVATE 이미지와 함께 사용하면 앱에서 이미지 데이터에 직접 액세스할 수 없습니다. 대신 버퍼 사본 없이 queueInputImage() 메서드를 호출하여 PRIVATE 이미지를 ImageWriter에 직접 전달합니다.

이제 ImageReader 클래스가 PRIVATE 형식 이미지 스트림을 지원합니다. 이 지원을 통해 앱은 ImageReader 출력 이미지의 원형 이미지 대기열을 유지하고, 하나 이상의 이미지를 선택하고, 카메라 재처리를 위해 이들을 ImageWriter에 보낼 수 있습니다.

Android for Work 기능

이 릴리스에는 다음과 같은 Android for Work에 대한 새 API가 포함되어 있습니다.

  • 회사 소유, 일회용 기기 제어 능력 향상: 이제 기기 소유자가 다음과 같은 설정을 제어하여 회사 소유, 일회용 (COSU) 기기 관리를 한층 개선할 수 있습니다.
    • setKeyguardDisabled() 메서드로 키가드를 사용 중지하거나 다시 사용 설정합니다.
    • 상태 표시줄 (빠른 설정, 알림, Google Now를 실행하는 탐색 스와이프 업 동작 포함)을 비활성화하거나 다시 활성화하려면 setStatusBarDisabled() 메서드를 사용하세요.
    • UserManager 상수 DISALLOW_SAFE_BOOT를 사용하여 안전 부팅을 사용 중지하거나 다시 사용 설정합니다.
    • 플러그인 상태에서 화면이 꺼지지 않도록 STAY_ON_WHILE_PLUGGED_IN 상수를 사용합니다.
  • 기기 소유자의 앱 자동 설치 및 설치 제거: 이제 기기 소유자가 업무용 Google Play와는 별개로 PackageInstaller API를 사용하여 애플리케이션을 자동으로 설치하고 제거할 수 있습니다. 이제 사용자 상호작용 없이도 앱을 가져오고 설치하는 기기 소유자를 통해 기기를 프로비저닝할 수 있습니다. 이 기능은 Google 계정을 활성화하지 않고도 키오스크 또는 그와 같은 다른 기기를 원터치 방식으로 프로비저닝하는 데 유용합니다.
  • 자동 엔터프라이즈 인증서 액세스: 앱이 choosePrivateKeyAlias()를 호출하면 사용자에게 인증서를 선택하라는 메시지가 표시되기 전에 프로필 또는 기기 소유자가 onChoosePrivateKeyAlias() 메서드를 호출하여 요청하는 애플리케이션에 자동으로 별칭을 제공할 수 있습니다. 이 기능을 사용하면 관리 앱에 사용자 상호작용 없이 인증서에 대한 액세스 권한을 부여할 수 있습니다.
  • 시스템 업데이트 자동 수락 시스템 업데이트 정책을 setSystemUpdatePolicy()로 설정하면 이제 기기 소유자가 자동으로 시스템 업데이트를 수락할 수 있습니다(예: 키오스크 기기의 경우). 또는 업데이트를 연기하거나 사용자가 업데이트를 수행하지 못하도록 최대 30일까지 막을 수 있습니다. 또한 관리자는 매일 시간 창을 설정하여 여기에서 업데이트를 수행하도록 할 수 있습니다. 예를 들어, 키오스크 기기를 사용하지 않는 시간 중에 업데이트하도록 합니다. 시스템 업데이트를 사용할 수 있게 되면 시스템이 기기 정책 컨트롤러 앱에 시스템 업데이트 정책이 설정되어 있는지 확인하고, 그에 따라 동작합니다.
  • 위임된 인증서 설치: 이제 프로필 또는 기기 소유자가 서드 파티 앱에 다음과 같은 DevicePolicyManager 인증서 관리 API를 호출할 수 있는 권한을 부여할 수 있습니다.
  • Android용 업무용 앱 내에서 업무 상태 알림 기능을 표시하는 휴대기기
  • 데이터 사용량 추적. 이제 프로필 또는 기기 소유자는 새 NetworkStatsManager 메서드를 사용하여 설정 > 데이터 사용량에 표시되는 데이터 사용량 통계를 쿼리할 수 있습니다. 프로필 소유자에게는 자신이 관리하는 프로필에서 데이터를 쿼리할 권한이 자동으로 부여되는 반면, 기기 소유자의 경우에는 관리된 기본 사용자의 사용량 데이터에 대한 액세스 권한이 주어집니다.
  • 런타임 권한 관리:

    프로필 또는 기기 소유자는 setPermissionPolicy()를 사용하여 모든 애플리케이션의 모든 런타임 요청에 대해 권한 정책을 설정할 수 있습니다. 이를 통해 사용자에게 권한을 부여하라는 메시지를 표시하거나 자동으로 권한을 허용하거나 해당 권한을 자동으로 거부하도록 할 수 있습니다. 후자의 정책이 설정되어 있으면 사용자는 앱의 설정에 있는 권한 화면 내에서 프로필 또는 기기 소유자가 선택한 내용을 수정할 수 없습니다.

  • 설정의 VPN: 이제 VPN 앱이 설정 > 더보기 > VPN에 표시됩니다. 또한 VPN 사용량에 수반되는 알림은 이제 VPN 구성 방식만 구체적으로 다루게 되었습니다. 프로필 소유자의 경우, 이러한 알림은 VPN이 관리된 프로필에 대해 구성되었는지, 아니면 개인 프로필에 구성되었거나 둘 모두에 구성되었는지 여부에 한정됩니다. 기기 소유자의 경우, 이 알림은 VPN이 기기 전체에 대해 구성되었는지 여부만 나타냅니다.
  • 작업 상태 알림: 이제 관리 프로필의 앱에 포그라운드에서 실행되는 액티비티가 있을 때마다 상태 표시줄 서류가방 아이콘이 나타납니다. 또한, 기기가 관리 프로필 내 앱의 활동에 대해 직접 잠금 해제된 경우, 알림 메시지가 표시되어 사용자에게 지금 작업 프로필 내에 있다는 사실을 알려주기도 합니다.