我在BaseApplication
课程中设置了信标后台扫描using this tutorial,但在 Marshmallow 正在运行的设备中显示了此日志:
Caught a RuntimeException from the binder stub implementation.
java.lang.SecurityException: Need ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission to get scan results
最后,通过this和this引用,我可以为Marshmallow运行设备提供位置访问,以检测信标。
我的问题:
即使我提供位置访问权限,它也不会检测到信标,也会停止显示以上日志。这是ISSUE中的问题吗?我的Nexus 5内部版本号 MRA58N
更新:当我手动打开位置时,它可以正常工作。但这很奇怪。是检测信标的正确方法吗?
答案 0 :(得分:2)
Android Marshmallow引入了全新的应用程序权限,用户现在可以随时撤消运行时权限。这意味着您无法假定应用程序可以访问该权限,即使之前已授予该权限。您可以参考this lib或this guide。并且您可以创建在启用GPS后更改的接口侦听器位置,当位置!= 0.启用GPS后,您必须恢复。我希望这会帮助你。