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">
接著,應用程式必須分多次作業要求權限:
- 檢查使用者是否已授予
BODY_SENSORS
。如果沒有,請提出權限要求。 - 檢查使用者是否已授予
BODY_SENSORS_BACKGROUND
。如果沒有,請提出權限要求。
注意:如果應用程式同時要求兩項人體感應器權限,系統會忽略要求,且不會授予應用程式任何權限。
在 Android 13 (API 級別 33) 以上版本中,執行階段權限對話方塊沒有「Allow all the time」選項。使用者必須改為透過系統設定啟用「一律允許」背景感應器存取權,如圖 1 所示。如果您在授予 BODY_SENSORS
權限後要求 BODY_SENSORS_BACKGROUND
權限,可以協助使用者前往這個設定頁面。即便使用者拒絕授予「一律允許」權限,他們也應要能繼續使用應用程式。
應用程式指定較舊版本
如果應用程式指定的 Android 版本低於 Android 13,當您要求 BODY_SENSORS
權限時,系統不會自動授予背景存取權。相反地,使用者會看到系統對話方塊,請他們前往應用程式的感應器權限設定,如圖 2 所示。然後,使用者必須在該設定頁面允許使用背景感應器。
當然,使用者可以拒絕背景存取權,這和在應用程式於背景執行時撤銷 BODY_SENSORS
權限的效果相同。如果應用程式在沒有背景存取權的情況下使用 PassiveMonitoringClient
進入背景,就會失去 BODY_SENSORS
權限,而系統會呼叫 onPermissionLost()
回呼。因此,請務必遵循要求執行階段權限的最佳做法。