說明如何存取敏感性資訊

Stay organized with collections Save and categorize content based on your preferences.

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

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

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

隱私資訊主頁

垂直時間軸會列出可存取位置資訊的應用程式,以及存取時間
圖 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. 決定要顯示哪種資料存取權的理由。舉例來說,您可能會顯示應用程式網站或說明中心文章。如要進一步提供應用程式存取的資料類型與存取時機,請說明當系統叫用權限使用意圖時,會納入哪些額外資料:

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

  • 如果您新增的意圖篩選器包含 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);