Android 10 无法使用 BLE 蓝牙扫描

新手上路,请多包涵

我正在研究 BLE 蓝牙扫描,适用于除 Android 10 以外的所有设备。Android 10 无法正常工作,任何人都请回答扫描 BLE 蓝牙的第 10 版问题

原文由 raj.a 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 748
1 个回答

要使 BLE 扫描适用于针对 Android 10 的 Android 应用程序,您需要向用户询问

ACCESS_BACKGROUND_LOCATION 访问

与 ACCESS_FINE_LOCATION 一起,也不要忘记在清单中添加权限:

 <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />

这是为什么的解释:

Android 10(API 级别 29)引入了许多功能和行为更改,以更好地保护用户隐私。这些变化扩大了用户对其数据以及他们赋予应用程序的功能的透明度和控制力。

简而言之,您的问题:

在后台访问设备位置需要权限

为了支持用户对应用访问位置信息的额外控制,Android 10 引入了 ACCESS_BACKGROUND_LOCATION 权限。

ACCESS_FINE_LOCATIONACCESS_COARSE_LOCATION 权限不同,ACCESS_BACKGROUND_LOCATION 权限仅影响应用程序在后台运行时对位置的访问。除非满足以下条件之一,否则应用程序将被视为正在后台访问位置:

属于该应用程序的活动是可见的。该应用正在运行已声明前台服务类型位置的前台服务。

要在您的应用中声明服务的前台服务类型,请将您应用的 targetSdkVersion 或 compileSdkVersion 设置为 29 或更高。了解有关前台服务如何继续用户启动的需要访问位置的操作的更多信息。

希望这能解决您的问题 :)

原文由 Ruzin 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏