개인 정보 보호 표시기

Android는 다음과 같은 액세스 유형에 관한 개인 정보 보호 표시기를 표시하여 사용자에게 투명성을 제공합니다.

  • 카메라 및 마이크 액세스. 앱이 카메라 및 마이크 app-op 권한을 통해 비공개인 데이터 소스를 사용하는 경우 표시기가 표시됩니다. 관련 CDD 요구사항은 2.2.5. 보안 모델을 참고하세요.

  • 위치 액세스. 앱이 기기의 위치에 액세스하는 경우 표시기가 표시됩니다. 관련 CDD 요구사항은 9.8.8. 위치를 참고하세요.

사용자는 표시기를 탭하여 어느 앱이 데이터에 액세스했는지 확인할 수 있습니다.

활성 및 최근 사용

Android UI는 실행 중 사용과 최근 사용을 구분합니다.

  • Android 17 이상에서는 위치 사용이 시스템에서 실행 중으로 표시되거나 10초가 지나지 않은 경우 활성 상태로 간주됩니다. 위치 점의 경우 액세스가 활성 상태로 간주됩니다. 비시스템 앱이 포그라운드 상태에서 실행 중이면

  • Android 12 이상에서는 마이크 및 카메라 사용이 시스템에서 실행 중으로 표시되거나 5초가 지나지 않은 경우 활성 상태로 간주됩니다.

상태 표시줄 아이콘은 앱에서 사용자에게 민감한 마이크, 카메라 또는 위치 액세스가 진행 중일 때마다 표시됩니다. 사용자는 이러한 아이콘을 탭하여 어느 앱이 마이크, 카메라, 위치 또는 이러한 항목의 조합에 액세스 중인지 확인할 수 있습니다. 다음은 사용 중 표시기의 예입니다.

활성 액세스를 보여주는 표시기

그림 1. 활성 액세스를 표시하는 사용 중 표시기 (오른쪽 상단 모서리)

액세스는 표시기가 표시되어 있는 동안 활성 상태로 간주됩니다. 먼저 아이콘이 표시된 후 점으로 바뀌고 앱이 닫힐 때까지 지속됩니다. 사용자가 빠른 설정을 열고 표시기를 탭하면 앱이 마이크, 카메라, 위치 또는 이러한 항목의 조합을 사용 중인지 보여주는 대화상자가 표시됩니다.

그림 2는 실행 중인 앱이 활성 시간 창 내에서 데이터에 액세스한 경우의 활성 액세스 표시기를 보여줍니다.

활성 및 최근 액세스 및 소스 표시기

그림 2. 활성 및 최근 액세스 표시기

최근 액세스 표시기는 직전 15초 (위치 데이터의 경우 20초) 이내에 앱이 데이터에 액세스했지만 지금은 이 앱이 활성 상태가 아님을 알려줍니다. 대화상자에는 모든 활성 앱이 표시되지만, 하나의 앱만 최근 액세스의 소스로 표시됩니다. 직전 15초 또는 20초 안에 둘 이상의 앱이 데이터에 액세스한 경우도 마찬가지입니다. 활성 또는 최근 시간 창 내에서 위치 데이터에 액세스한 모든 앱이 대화상자에 표시됩니다. 액세스 뷰는 사용자가 알림 대화상자를 닫을 때까지 유지됩니다.

전달 및 사용 설정

PermissionManager 클래스는 시스템 UI에 있는 대화상자를 채우는 메서드를 제공합니다. 시스템 UI는 기기 구성 스위치 privacy/mic_camera_indicators_enabled에 반응합니다. 이 스위치는 (1) 전달, (2) 사용 설정이라는 두 개의 개별적인 전달 수단이 있기 때문에 필요합니다.

프로세스 흐름

권한 표시기 기능은 다음과 같은 세 가지 부분으로 구성됩니다.

  • 표시기 (시스템 UI에서 처리)
  • 어느 앱이 데이터를 사용 중인지 확인할 방법

PermissionController 는 어느 앱이 데이터를 사용 중인지 확인하는 메커니즘을 제공합니다. 시스템 UI는 비공개 데이터를 사용하여 앱을 수신 대기합니다. 시스템 UI는 상단 탐색 메뉴에 사용된 권한에 대응하는 아이콘을 표시합니다. 사용자가 아이콘을 클릭하면 PermissionController가 사용에 관한 데이터를 표시합니다.

권한 표시기 기능의 프로세스 흐름

그림 3. 시스템 구성요소 및 (UI) 전환 흐름

  • 1 앱이 시스템에 비공개 데이터를 요청합니다.

  • 2 시스템이 권한을 확인합니다. 권한이 허용된 경우 시스템이 데이터 제공업체에 알림을 보내고 app-op에 사용을 기록합니다.

  • 3 데이터 제공업체가 앱에 데이터를 제공합니다.

  • 4-5 사용자가 아이콘을 클릭합니다. 시스템 UI가 PermissionManager에 데이터를 요청하고 사용자에게 대화상자를 표시합니다.

프로세스 세부정보

App Ops는 활동 상태와 개별 API 호출 개수를 추적하고 카메라, 마이크, 표시기와 상호작용하여 앱이 사용자 기기에 있는 오디오 및 카메라 데이터에 액세스하면 사용자에게 알려주는 런타임 권한 보호 API에 대한 액세스를 기록합니다.

  1. 앱은 AppOpsManager.startOp, stopOp 또는 noteOp를 호출하여 마이크, 카메라 또는 위치를 사용합니다. 그러면 시스템 서버에 app-op 레코드가 생성됩니다. 17 이상에서는 위치 표시기도 이러한 app-op 레코드를 사용합니다.

  2. 시스템 UI가 AppOpsManager.OnOpActiveChangedInternalListenerOnOpNotedListener 리스너를 사용하여 새로운 app-op를 수신 대기합니다. startOp 또는 noteOp 호출을 통해 새로운 사용이 수신되면 시스템 UI가 이 사용이 시스템 앱에서 발생한 것인지 확인합니다.

    • 시스템 앱에서 발생한 것임이 확인되고 마이크가 사용된 경우, 시스템 UI가 마이크가 음소거되었는지 확인합니다.

    • 시스템 UI에서 비시스템 앱 사용이 확인되면(마이크 사용의 경우 마이크 음소거가 해제되었는지, 카메라 사용의 경우 카메라가 켜져 있는지 확인된 경우) 해당 사용을 나타내는 아이콘을 표시합니다.

    • 시스템 UI가 비시스템 앱에서 발생한 것임이 확인되면 관련 전환이 활성 상태인 경우 이러한 사용을 반영하는 아이콘을 표시합니다.

      • 마이크: 마이크가 음소거 해제됩니다.
      • 카메라: 카메라가 설정됩니다.
      • 위치: 앱이 포그라운드 상태에서 실행 중입니다.

시스템 UI가 지속 시간이 없는 noteOp를 수신하면 최소 5초 (위치의 경우 10초) 동안 아이콘을 표시합니다. 그 밖의 경우에는 stopOp가 수신될 때까지 또는 최소 기간인 5초 또는 10초 동안(둘 중 더 긴 시간 동안) 아이콘을 표시합니다. 사용자가 아이콘을 클릭하면 인텐트가 시작되어 PermissionController로 전달되고 대화상자가 시작됩니다.

PermissionController 가 마이크, 카메라, 위치의 모든 최근 사용을 로드합니다. 이러한 사용 중 하나라도 실행 중인지, 또는 시스템 UI에 의해 설정된 시간 내에 실행되고 있었는지 확인합니다 (마이크 또는 카메라의 경우 15초, 위치의 경우 20초). 일치하는 항목을 찾으면 앱의 이름과 사용된 권한을 표시합니다.

전화통신이 Android Google 검색 앱 (AGSA) 및 GMS와 작동하면서 (전화 통화에 사용되는 별도의 마이크 스택을 고려하기 위해) 권한 사용을 구현해야 합니다.