我做了一项服务,定期广播STEP_COUNTER和STEP_DETECTOR传感器的计数步数。在一个应用程序中,我让它完美地工作,但在将完全相同的代码复制到另一个项目后,它就停止了工作。经过数小时的调试,我找到了解决方法。当我将build.gradle中的compileSdkVersion更改为28时,它运行良好,但更改为29会使它停止工作。为什么?
根据Android 10中的隐私更改(适用于targetSdkVersion
为29或更高的应用程序(:
Android 10为需要检测用户步数或对用户身体活动(如步行、骑自行车或在车内移动(进行分类的应用程序引入了
android.permission.ACTIVITY_RECOGNITION
运行时权限。这是为了让用户了解设备传感器数据在"设置"中的使用方式。
设备上唯一需要声明此权限的内置传感器是步进计数器和步进检测器传感器。
因此您必须:
-
将
android.permission.ACTIVITY_RECOGNITION
添加到应用程序的清单中。 -
在运行时请求权限,并让用户授予该权限。