說明如何存取更多敏感性資訊

位置、麥克風和相機的相關權限,可授權讓應用程式存取使用者的特定敏感資訊。本頁面說明了此平台包含的數種機制,可協助使用者掌握最新資訊,以及控管哪些應用程式能夠存取位置、麥克風和相機權限。

只要遵循隱私權最佳做法,這類保護隱私權的系統功能就不會影響應用程式處理位置、麥克風和相機等相關權限的方式。

請特別注意,請務必在應用程式中完成以下操作:

隱私資訊主頁

垂直時間軸會列出可存取位置資訊的應用程式,以及存取時間
圖 1.位置使用畫面是「隱私權資訊主頁」的一部分。

在支援 Android 12 或以上版本的裝置上,系統設定會顯示「隱私權資訊主頁」畫面。在這畫面,使用者可以透過個別存取其畫面,看到應用程式存取位置、相機和麥克風的資訊。每個畫面都會顯示不同應用程式各自存取特定類型資料的時間軸。圖 1 顯示位置資訊的資料存取時間軸。

顯示資料存取的理由

您的應用程式可以為使用者提供基本理由,並協助他們瞭解應用程式存取位置、相機或麥克風資訊的原因。原因可能會顯示在新版「隱私資訊主頁」畫面、應用程式的權限頁面,或是兩處一併顯示。

如要瞭解應用程式存取位置、相機和麥克風資訊的原因,請完成下列步驟:

  1. 新增活動時,要說明應用程式存取特定資料的原因。在這個活動中,將 android:permission 屬性設為 START_VIEW_PERMISSION_USAGE

    如果您的應用程式指定 Android 12 或以上的版本,您必須明確定義 android:exported 的屬性

  2. 將下列意圖篩選器加入新建立的活動:

    <!-- android:exported required if you target Android 12. -->
    <activity android:name=".DataAccessRationaleActivity"
              android:permission="android.permission.START_VIEW_PERMISSION_USAGE"
              android:exported="true">
           <!-- VIEW_PERMISSION_USAGE shows a selectable information icon on
                your app permission's page in system settings.
                VIEW_PERMISSION_USAGE_FOR_PERIOD shows a selectable information
                icon on the Privacy Dashboard screen. -->
        <intent-filter>
           <action android:name="android.intent.action.VIEW_PERMISSION_USAGE" />
           <action android:name="android.intent.action.VIEW_PERMISSION_USAGE_FOR_PERIOD" />
           <category android:name="android.intent.category.DEFAULT" />
           ...
        </intent-filter>
    </activity>
  3. 決定要顯示哪種資料存取權的理由。舉例來說,您可能會顯示應用程式網站或說明中心文章。如要詳細說明您應用程式存取的資料類型與時機,請處理系統在叫用權限使用意圖時使用的 extra 資料:

視您新增的意圖篩選器而定,使用者會在特定螢幕畫面上,您的應用程式名稱旁看到資訊圖示。

  • 如果您新增的意圖篩選器包含 VIEW_PERMISSION_USAGE 動作,使用者會在系統設定中的應用程式權限頁面上看到該圖示。您可以將該動作套用至所有執行階段權限。
  • 如果您新增的意圖篩選器包含 VIEW_PERMISSION_USAGE_FOR_PERIOD 動作,只要您的應用程式出現在「隱私權資訊主頁」畫面,使用者就會在應用程式名稱旁看到該圖示。

使用者選取該圖示後,系統就會啟動應用程式的解釋。

右上角的圓角矩形,內含相機和麥克風圖示
圖 2. 麥克風和相機圖示,顯示近期的資料存取權。

指標

若是搭載 Android 12 以上版本的裝置,當應用程式存取麥克風或相機,狀態列中會顯示相應圖示。如果是在沈浸模式中,應用程式圖示會出現在畫面右上角。使用者可以開啟「快速設定」並選取圖示,查看目前正在使用麥克風或相機的應用程式。圖 2 顯示含有圖示的螢幕截圖。

找出指標所在的畫面位置

如果您的應用程式支援沈浸模式或全螢幕 UI,指標可能會與應用程式的 UI 暫時重疊。為協助將您的 UI 調整這些指標,系統會導入 getPrivacyIndicatorBounds(),下列為程式碼片段示範。用這個 API 可辨別指標可能顯示的範圍。接著,您便可以決定以不同的方式組織規劃 UI 畫面。

Kotlin

view.setOnApplyWindowInsetsListener { view, windowInsets ->
    val indicatorBounds = windowInsets.getPrivacyIndicatorBounds()
    // change your UI to avoid overlapping
    windowInsets
}

Toggles

快速設定圖塊會標上「相機存取權」和「麥克風存取權」
圖 3. 「快速設定」中的麥克風和相機快速停用鈕。

如果是搭載 Android 12 以上版本的支援裝置,使用者只要按下一個快速停用鈕,即可啟用或停用裝置上所有應用程式的相機和麥克風存取權。使用者可以透過「快速設定」 (如圖 3 或系統設定中的「隱私」畫面) 切換開關選項。

攝影機和麥克風的切換按鈕會影響裝置上所有的應用程式:

  • 使用者關閉攝影機存取權時,應用程式會接收空白畫面。
  • 使用者關閉麥克風存取權後,應用程式就會收到靜音。此外,無論您是否宣告 HIGH_SAMPLING_RATE_SENSORS 權限,動作感測器都有頻率限制

如果使用者關閉攝影機或麥克風的存取權,然後開啟需要存取攝影機或麥克風資訊的應用程式,系統會提醒使用者,裝置的快速切換鈕為關閉狀態。

查看裝置支援

如要檢查裝置是否支援麥克風和相機開關,請新增以下程式碼片段的邏輯:

Kotlin

val sensorPrivacyManager = applicationContext
        .getSystemService(SensorPrivacyManager::class.java)
        as SensorPrivacyManager
val supportsMicrophoneToggle = sensorPrivacyManager
        .supportsSensorToggle(Sensors.MICROPHONE)
val supportsCameraToggle = sensorPrivacyManager
        .supportsSensorToggle(Sensors.CAMERA)

Java

SensorPrivacyManager sensorPrivacyManager = getApplicationContext()
        .getSystemService(SensorPrivacyManager.class);
boolean supportsMicrophoneToggle = sensorPrivacyManager
        .supportsSensorToggle(Sensors.MICROPHONE);
boolean supportsCameraToggle = sensorPrivacyManager
        .supportsSensorToggle(Sensors.CAMERA);