0

当我尝试订阅TYPE_STEP_COUNT_CUMULATIVE(累积步骤)并TYPE_STEP_COUNT_DELTA使用 RecordingClient (https://developers.google.com/android/reference/com/google/android/gms/fitness/RecordingClient)时,Google Fit 给了我以下例外

failure: com.google.android.gms.common.api.ApiException: 10: SecurityException: com.google.step_count.cumulative requires android.permission.ACTIVITY_RECOGNITION

failure: com.google.android.gms.common.api.ApiException: 10: SecurityException: com.google.step_count.delta requires android.permission.ACTIVITY_RECOGNITION

这仅适用于 API 级别 29 及更高版本。

我尝试按照在 Android 10/Q (SDK 29) 上运行的 Android ACTIVITY_RECOGNITION Permission SDK 28的建议在清单中包含<uses-permission android:name="android.permission.ACTIVITY_RECOGNITION"/>和, 但我无法从 Main Activity 请求许可。<uses-permission android:name="com.google.android.gms.permission.ACTIVITY_RECOGNITION" />

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.ACTIVITY_RECOGNITION), REQUEST_CODE) // error occurs here
}

ACTIVITY_RECOGNITION 无法识别,我在键入时也没有将其作为建议。

4

1 回答 1

2

我的目标是 gradle 中的 API 28。只有在更改目标 API29 后,IDE 才识别权限。Google 为 API 29 及更高版本引入了 ACTIVITY_RECOGNITION 权限,因为它被视为危险权限。对于 API 28 及以下版本,权限是在运行时自动授予的,但如果用户删除了权限,也必须进行处理。您可以在此处此处找到更多相关信息

于 2020-07-23T20:25:40.513 回答