检测 "Bluetooth scanning" for location 是否开启
Detect if "Bluetooth scanning" for location is turned on
自 AndroidM 起,如果您在位置设置(见屏幕截图)。
为了扫描 BLE 设备,必须满足以下条件:
COARSE_LOCATION
或 FINE_LOCATION
权限已授予。
以及以下其中一项:
- 已启用全球位置选择器。
- 蓝牙扫描 选项已启用(见屏幕截图)。
我可以检查是否已授予权限,并且位置选择器的状态很好。我没能做到的是弄清楚 如何检查 Bluetooth Scanning
选项的状态?
非常感谢任何见解!
经过多方查找,终于找到了知道状态的方法:
try {
ContentResolver resolver = getApplicationContext().getContentResolver();
int result = Settings.Global.getInt(resolver,"ble_scan_always_enabled");
if(result == 1) {
// Bluetooth scanning is on
} else {
// Bluetooth scanning is off
}
} catch(SettingNotFoundException e) {
// Settings doesn't exist, on Android < 6
}
您也可以使用"wifi_scan_always_enabled"
获取wifi扫描状态。
它不需要任何权限。
如果我找到将用户重定向到屏幕或禁用它的方法,我会更新此 post。
自 AndroidM 起,如果您在位置设置(见屏幕截图)。
为了扫描 BLE 设备,必须满足以下条件:
COARSE_LOCATION
或FINE_LOCATION
权限已授予。
以及以下其中一项:
- 已启用全球位置选择器。
- 蓝牙扫描 选项已启用(见屏幕截图)。
我可以检查是否已授予权限,并且位置选择器的状态很好。我没能做到的是弄清楚 如何检查 Bluetooth Scanning
选项的状态?
非常感谢任何见解!
经过多方查找,终于找到了知道状态的方法:
try {
ContentResolver resolver = getApplicationContext().getContentResolver();
int result = Settings.Global.getInt(resolver,"ble_scan_always_enabled");
if(result == 1) {
// Bluetooth scanning is on
} else {
// Bluetooth scanning is off
}
} catch(SettingNotFoundException e) {
// Settings doesn't exist, on Android < 6
}
您也可以使用"wifi_scan_always_enabled"
获取wifi扫描状态。
它不需要任何权限。
如果我找到将用户重定向到屏幕或禁用它的方法,我会更新此 post。