summaryrefslogtreecommitdiffstats
path: root/src/bluetooth/qbluetoothdevicediscoveryagent_android.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/bluetooth/qbluetoothdevicediscoveryagent_android.cpp')
-rw-r--r--src/bluetooth/qbluetoothdevicediscoveryagent_android.cpp21
1 files changed, 9 insertions, 12 deletions
diff --git a/src/bluetooth/qbluetoothdevicediscoveryagent_android.cpp b/src/bluetooth/qbluetoothdevicediscoveryagent_android.cpp
index fd17faee..53acd2d1 100644
--- a/src/bluetooth/qbluetoothdevicediscoveryagent_android.cpp
+++ b/src/bluetooth/qbluetoothdevicediscoveryagent_android.cpp
@@ -198,18 +198,15 @@ void QBluetoothDeviceDiscoveryAgentPrivate::start(QBluetoothDeviceDiscoveryAgent
if (QtAndroid::androidSdkVersion() >= 28) {
locationTurnedOn = bool(locService.callMethod<jboolean>("isLocationEnabled"));
} else {
- // try GPS and network provider
- QAndroidJniObject provider = QAndroidJniObject::getStaticObjectField(
- "android/location/LocationManager", "GPS_PROVIDER", "Ljava/lang/String;");
- bool gpsTurnedOn = bool(locService.callMethod<jboolean>("isProviderEnabled",
- "(Ljava/lang/String;)Z", provider.object<jstring>()));
-
- provider = QAndroidJniObject::getStaticObjectField(
- "android/location/LocationManager", "NETWORK_PROVIDER", "Ljava/lang/String;");
- bool providerTurnedOn = bool(locService.callMethod<jboolean>("isProviderEnabled",
- "(Ljava/lang/String;)Z", provider.object<jstring>()));
-
- locationTurnedOn = gpsTurnedOn || providerTurnedOn;
+ // check whether there is any enabled provider
+ QAndroidJniObject listOfEnabledProviders =
+ locService.callObjectMethod("getProviders", "(Z)Ljava/util/List;", true);
+
+ if (listOfEnabledProviders.isValid()) {
+ int size = listOfEnabledProviders.callMethod<jint>("size", "()I");
+ locationTurnedOn = size > 0;
+ qCDebug(QT_BT_ANDROID) << size << "enabled location providers detected.";
+ }
}
}