【问题标题】:android.permission.ACTIVITY_RECOGNITION not getting recognized while trying to request for user permissionandroid.permission.ACTIVITY_RECOGNITION 在尝试请求用户权限时未被识别
【发布时间】:2020-07-08 04:04:54
【问题描述】:

当我尝试使用 RecordingClient (https://developers.google.com/android/reference/com/google/android/gms/fitness/RecordingClient) 订阅 TYPE_STEP_COUNT_CUMULATIVE(累积步数)和 TYPE_STEP_COUNT_DELTA 时,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 ACTIVITY_RECOGNITION Permission SDK 28 running on Android 10/Q (SDK 29) 的建议在清单中包含<uses-permission android:name="android.permission.ACTIVITY_RECOGNITION"/><uses-permission android:name="com.google.android.gms.permission.ACTIVITY_RECOGNITION" /> 但我无法向 Main Activity 请求许可。

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 无法识别,我在输入时也没有收到建议。

【问题讨论】:

  • 您是否在运行时检查 ACTIVITY_RECOGNITION 权限?
  • 我通过将 targetSdkVersion 从 29 更改为 28 来修复它。虽然我认为对于 29,如文档中所述,我必须获得运行时权限,对于 28,在清单中提到 应该自动授予权限(developers.google.com/fit/android/…),但如果用户撤销权限,则必须进行处理。试一试就会更新。
  • @EraftYps 我试过了,但它甚至没有被识别出来。

标签: android kotlin google-api android-permissions google-fit-api


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-20
    • 1970-01-01
    • 2019-08-01
    相关资源
    最近更新 更多