Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
BLE蓝牙扫描在Android 10&;上不起作用;11由于位置许可_Android_Bluetooth Lowenergy - Fatal编程技术网

BLE蓝牙扫描在Android 10&;上不起作用;11由于位置许可

BLE蓝牙扫描在Android 10&;上不起作用;11由于位置许可,android,bluetooth-lowenergy,Android,Bluetooth Lowenergy,我正在开发BLE蓝牙扫描,除了安卓10和11之外,其他设备都在开发。更新应用程序后,Android 10和11中的蓝牙扫描无法工作。 有时,即使在允许位置权限之后,应用程序也必须从应用程序设置重新授予权限。 为什么这一点不为人所知,却总是在现实中实现 if(ContextCompat.checkSelfPermission(getContext(),Manifest.permission.ACCESS\u FINE\u LOCATION)==PackageManager.permission\u

我正在开发BLE蓝牙扫描,除了安卓10和11之外,其他设备都在开发。更新应用程序后,Android 10和11中的蓝牙扫描无法工作。 有时,即使在允许位置权限之后,应用程序也必须从应用程序设置重新授予权限。 为什么这一点不为人所知,却总是在现实中实现

if(ContextCompat.checkSelfPermission(getContext(),Manifest.permission.ACCESS\u FINE\u LOCATION)==PackageManager.permission\u已授予|| ContextCompat.checkSelfPermission(getContext(),Manifest.permission.ACCESS\u位置)==PackageManager.permission\u已授予){ //代码在这里。。
}

尝试在启动应用程序时实际请求用户的许可,方法是:


您可以在文档的第页找到有关如何更好地处理此事件的更多信息。

请验证您是否已根据操作系统版本执行了位置权限检查

  • 安卓8(≥8) :后台应用程序每小时只能检索用户位置几次


  • 在Android 10之前(除了授予权限外,您还必须在较新的Android版本中启用扫描位置,粗略的位置权限是不够的;您需要精细的位置。
    // Request location permission, needed for BLE Scan
    ActivityCompat.requestPermissions(this,
        new String[]{
            Manifest.permission.ACCESS_FINE_LOCATION,
            Manifest.permission.ACCESS_COARSE_LOCATION},
        2);