android - STEP_COUNTER 和 STEP_DETECTOR 适用于 SDK 28,但不适用于 SDK 29?
问题描述
我已经提供了一项服务,该服务会定期广播来自 STEP_COUNTER 和 STEP_DETECTOR 传感器的计数步数。在一个应用程序中,我让它完美运行,但在将完全相同的代码复制到另一个项目后,它停止了工作。经过几个小时的调试,我想出了如何解决它。当我将 build.gradle 中的 compileSdkVersion 更改为 28 时,它可以正常工作,但是将其更改为 29 会使其停止工作。这是为什么?
解决方案
根据Android 10 中的隐私更改(适用于 atargetSdkVersion
为 29 或更高的应用程序):
Android 10
android.permission.ACTIVITY_RECOGNITION
为需要检测用户步数或对用户的身体活动(例如步行、骑自行车或在车辆中移动)进行分类的应用引入了运行时权限。这旨在让用户了解设备传感器数据在“设置”中的使用方式。
因此,您必须:
将 添加
android.permission.ACTIVITY_RECOGNITION
到应用的清单中。在运行时请求权限并让用户授予该权限。
推荐阅读
- docker - containerd 是否提供了任何方法来暂停容器,例如在 Docker 中?
- swagger - 无法引用在 Swagger 的单独文件中定义的组件架构
- javascript - 在 onChange 中使用时反应 setState 工作缓慢
- javascript - 如何将更改的对象返回到下载它的组件?
- python - 生成白噪声(具有零均值和单一方差的正态分布)
- azure - 第 1 代与第 2 代 Azure VM 与 VM(经典)与 VM 相同
- reactjs - React Navigation 在 react native 的 axios 调用中不起作用
- android - 将 sqlcipher 从 3.5.4 升级到 4.2.0 后 GreenDAO 无法访问现有数据库
- symfony - Symfony 验证码未显示
- python - Python中的阶乘函数和打印函数