首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android 10不支持BLE蓝牙扫描

Android 10不支持BLE蓝牙扫描
EN

Stack Overflow用户
提问于 2019-10-17 17:00:34
回答 9查看 24.9K关注 0票数 21

我正在进行BLE蓝牙扫描,除了Android 10以外的所有设备都可以工作。Android 10不能工作,任何人都可以回答有关扫描BLE蓝牙的版本10的问题

EN

回答 9

Stack Overflow用户

发布于 2019-11-02 16:48:09

要使BLE扫描在针对Android 10的Android应用程序上工作,您需要询问用户

ACCESS_BACKGROUND_LOCATION

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

代码语言:javascript
复制
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />

原因如下:

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

简而言之,你的问题:

在后台通过

访问设备位置需要权限

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

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

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

要声明应用程序中服务的前台服务类型,请将应用程序的targetSdkVersion或compileSdkVersion设置为29或更高。详细了解前台服务如何继续执行需要访问位置的用户发起的操作。

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

票数 26
EN

Stack Overflow用户

发布于 2020-02-21 17:01:35

在android 10上需要启用location才能执行BLE扫描。要检查location是否启用,并要求用户启用location服务(Kotlin):

代码语言:javascript
复制
val lm = getSystemService(Context.LOCATION_SERVICE) as LocationManager
if (!LocationManagerCompat.isLocationEnabled(lm)) {
    // Start Location Settings Activity, you should explain to the user why he need to enable location before.
    startActivity(Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS))
}

androidx.appcompat:appcompat:1.1.0依赖中提供了androidx类,如果不使用androidx,可以使用:

代码语言:javascript
复制
lm.isLocationEnabled()
票数 11
EN

Stack Overflow用户

发布于 2020-11-13 06:27:14

仅向AndroidManifest.xml添加以下权限是不够的

代码语言:javascript
复制
android.permission.ACCESS_FINE_LOCATION,  
android.permission.ACCESS_COARSE_LOCATION,  
android.permission.ACCESS_BACKGROUND_LOCATION. 

向MainActivity添加权限,例如

代码语言:javascript
复制
ActivityCompat.requestPermissions(
  this, 
  new String[] 
    {
      Manifest.permission.ACCESS_FINE_LOCATION, 
      Manifest.permission.ACCESS_COARSE_LOCATION, 
      Manifest.permission.ACCESS_BACKGROUND_LOCATION, 
      Manifest.permission.READ_EXTERNAL_STORAGE
  }, 0);
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58428763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档