来自SettingsApi的setNeedBle无法处理API23

Nim*_*myz 5 android bluetooth google-play-services

我正在使用com.google.android.gms.location.SettingsApi在我的Android应用中启用蓝牙和位置.它会弹出一个对话框,提示用户在禁用时启用它,以便我的应用程序可以扫描附近的蓝牙设备.我按照参考指南(https://developers.google.com/android/reference/com/google/android/gms/location/SettingsApi)中的说明进行操作.这非常简单:首先连接到GoogleApiClient,然后创建一个LcoationSettingsRequest.builder:

 LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder()
     .addLocationRequest(mLocationRequestHighAccuracy)
     .setNeedBle(true)
Run Code Online (Sandbox Code Playgroud)

在我的情况下,我添加了setNeedBle(true),因为我也需要打开蓝牙.然后,您可以从SettingsApi调用checkLocationSettings并向结果添加回调.这会弹出一个对话框,提示用户打开蓝牙和位置,然后您会收到用户是否选择执行此操作的回调.

这适用于具有API22和Google Play服务版本8.4.89的设备,但在具有API23和GPS版本8.4.89的同一设备上也不行.只有setNeedBle(true)部分不能在API23上运行:当蓝牙关闭时,我没有得到对话框(但启用该位置的对话框工作正常).由于它们都安装了相同版本的GPS,因此它与API22和API23有关.有谁知道这是一个错误还是我如何解决这个问题?

我发现了一个类似的问题(如何从Google Play服务弹出启用蓝牙提示?),但有人建议在GPS版本8.1中修复但我正在运行GPS v8.4.此外,这是一个稍微不同的问题,因为我没有获得SETTINGS_CHANGE_UNAVAILABLE状态.