要求存取人體感應器資料的背景存取權

Android 13 和 Wear OS 4 引進了一種方式,可讓應用程式從背景存取心率等人體感應器資料。這個全新的存取模式類似於在 Android 10 (API 級別 29) 中推出背景位置資訊存取權的模式。

如果應用程式需要在背景存取人體感應器資訊,例如在背景監控健康照護服務資料,您必須要求 BODY_SENSORS_BACKGROUND 權限。

如「隱私權最佳做法」所述,只有在對面向使用者的功能有必要性時,應用程式才應要求 BODY_SENSORS_BACKGROUND 權限,且應向使用者適當揭露這項資訊。

授予權限的程序視應用程式的目標 SDK 版本而定。

應用程式指定 Android 13 以上版本

除了現有的 BODY_SENSORS 權限以外,請在資訊清單檔案中宣告 BODY_SENSORS_BACKGROUND 權限:

<uses-permission android:name="android.permission.BODY_SENSORS">
<uses-permission android:name="android.permission.BODY_SENSORS_BACKGROUND">

接著,應用程式必須分多次作業要求權限:

  1. 檢查使用者是否已授予 BODY_SENSORS。如果沒有,請提出權限要求。
  2. 檢查使用者是否已授予 BODY_SENSORS_BACKGROUND。如果沒有,請提出權限要求。
「All the time」選項是在設定畫面上的第一個清單項目
圖 1. 感應器設定有一個叫做「All the time」的選項,可授予背景感應器資料存取權。

注意:如果應用程式同時要求兩項人體感應器權限,系統會忽略要求,且不會授予應用程式任何權限。

在 Android 13 (API 級別 33) 以上版本中,執行階段權限對話方塊沒有「Allow all the time」選項。使用者必須改為透過系統設定啟用「一律允許」背景感應器存取權,如圖 1 所示。如果您在授予 BODY_SENSORS 權限後要求 BODY_SENSORS_BACKGROUND 權限,可以協助使用者前往這個設定頁面。即便使用者拒絕授予「一律允許」權限,他們也應要能繼續使用應用程式。

應用程式指定較舊版本

連結文字為「go to settings」
圖 2. 權限對話方塊中有個連結,可讓使用者前往系統設定中的應用程式感應器權限頁面。

如果應用程式指定的 Android 版本低於 Android 13,當您要求 BODY_SENSORS 權限時,系統不會自動授予背景存取權。相反地,使用者會看到系統對話方塊,請他們前往應用程式的感應器權限設定,如圖 2 所示。然後,使用者必須在該設定頁面允許使用背景感應器。

當然,使用者可以拒絕背景存取權,這和在應用程式於背景執行時撤銷 BODY_SENSORS 權限的效果相同。如果應用程式在沒有背景存取權的情況下使用 PassiveMonitoringClient 進入背景,就會失去 BODY_SENSORS 權限,而系統會呼叫 onPermissionLost() 回呼。因此,請務必遵循要求執行階段權限的最佳做法。