diff options
Diffstat (limited to 'src/bluetooth/qbluetoothdevicediscoveryagent_android.cpp')
-rw-r--r-- | src/bluetooth/qbluetoothdevicediscoveryagent_android.cpp | 21 |
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."; + } } } |