android - Android ACTIVITY_RECOGNITION 权限 SDK 28 在 Android 10/Q (SDK 29) 上运行
问题描述
我的 Android 应用以 SDK 28 为目标并连接到 Google Fit 以上传数据并读取其他一些数据。该应用程序使用 HistoryAPI 读取 com.google.step_count.delta 数据。
该文档声称“com.google.android.gms.permission.ACTIVITY_RECOGNITION 权限被转换为预先授予的运行时权限”如果应用程序针对 SDK 28 但在 SDK 29 上运行: https ://developers.google.com/fit /android/authorization#android_permissions
我已经添加到应用程序的清单中,就像文档说的那样。
当此 Android 应用在运行 Android 10 (SDK 29) 的设备上并且用户首次连接到 Google Fit 时,我收到一条日志:
There was a problem subscribing.com.google.android.gms.common.api.ApiException: 10: SecurityException: com.google.step_count.delta requires android.permission.ACTIVITY_RECOGNITION
然而,文档声称这将被转换为预先授予的运行时权限。
团队还没有准备好将应用的目标 SDK 迁移到 29,那么我们如何继续获取 com.google.step_count.delta 数据而不会出现此错误?
我假设这个日志意味着它实际上没有连接,因为没有日志语句说:
Successfully subscribed to com.google.step_count.delta
解决方案
已解决:在 App Api 级别 28 +
<uses-permission android:name="android.permission.ACTIVITY_RECOGNITION"/>
应用程序应检查是否已授予权限:
if (ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.ACTIVITY_RECOGNITION)
!= PackageManager.PERMISSION_GRANTED) {
// Permission is not granted
}
要请求许可:
ActivityCompat.requestPermissions(thisActivity,
arrayOf(Manifest.permission.ACTIVITY_RECOGNITION),
MY_PERMISSIONS_REQUEST_ACTIVITY_RECOGNITION);
详细了解请求 Android 运行时权限。
如果您的应用面向 SDK 级别 28 或以下,则必须在其清单文件中指定 com.google.android.gms.permission.ACTIVITY_RECOGNITION 权限。
推荐阅读
- rx-java2 - 如何创建一个无限项流的可观察对象
- html - 如何为我的网站实现自定义图片关键字搜索?
- r - R中基于英语词典的字数
- javascript - 如何使用名称和值(数字 ID)填充下拉列表?
- javascript - 如何为本地文件创建服务器 url 以在前端提供下载?
- azure - 我可以在 Azure 中构建一个大型应用服务,然后在我不使用它时将其关闭吗?
- python - 如何计算 Python pandas 数据框中选择值的频率
- c++ - 开关可能会通过(不,可能不会)
- javascript - 照片未显示在组件中
- c# - 从一个字符串变量中获取一个特定的字母,为我的简单猜谜游戏寻找线索