我的应用程序会定期从后台开始跟踪前台服务中的位置更新,并在添加 android:foregroundServiceType="location" 后在 Android Q 中正常工作,但在 Android 11 beta 中它不再接收位置。
这种方式是 11 中的新方式还是只是一个错误?我没有在文件中看到任何内容。
我的应用程序会定期从后台开始跟踪前台服务中的位置更新,并在添加 android:foregroundServiceType="location" 后在 Android Q 中正常工作,但在 Android 11 beta 中它不再接收位置。
这种方式是 11 中的新方式还是只是一个错误?我没有在文件中看到任何内容。
从 Android 11 开始,前台“位置”服务不再足以获取后台位置更新。我们现在需要请求 ACCESS_BACKGROUND_LOCATION,如果前台服务是在后台启动的(比如广播接收器):
https://developer.android.com/about/versions/oreo/background-location-limits
更糟糕的是,您必须将 ACCESS_BACKGROUND_LOCATION 与其他位置权限分开请求,否则它将不起作用:
https://developer.android.com/about/versions/11/privacy/location
目前,如果前台服务正在运行并且活动在前台,应用程序只会获取位置更新。然后,您可以将应用程序置于后台或关闭屏幕,它会不断获取位置更新。
如果前台服务是在应用程序进入后台后启动的,例如通过广播接收器,那么它不会获得位置更新。
作为一种解决方法,我们必须请求后台位置权限。
似乎这是 Android 11 的一个未解决问题:https ://issuetracker.google.com/issues/158814176