@@ -4,6 +4,9 @@ import android.os.Build
4
4
import com.onesignal.common.AndroidUtils
5
5
import com.onesignal.common.threading.suspendifyOnThread
6
6
import com.onesignal.core.internal.application.IApplicationService
7
+ import com.onesignal.core.internal.preferences.IPreferencesService
8
+ import com.onesignal.core.internal.preferences.PreferenceOneSignalKeys
9
+ import com.onesignal.core.internal.preferences.PreferenceStores
7
10
import com.onesignal.core.internal.startup.IStartableService
8
11
import com.onesignal.debug.LogLevel
9
12
import com.onesignal.debug.internal.logging.Logging
@@ -22,13 +25,17 @@ internal class LocationManager(
22
25
private val _capturer : ILocationCapturer ,
23
26
private val _locationController : ILocationController ,
24
27
private val _locationPermissionController : LocationPermissionController ,
28
+ private val _prefs : IPreferencesService ,
25
29
) : ILocationManager, IStartableService, ILocationPermissionChangedHandler {
26
- private var _isShared : Boolean = false
30
+ private var _isShared : Boolean = _prefs .getBool( PreferenceStores . ONESIGNAL , PreferenceOneSignalKeys . PREFS_OS_LOCATION_SHARED , false ) !!
27
31
override var isShared
28
32
get() = _isShared
29
33
set(value) {
30
34
Logging .debug(" LocationManager.setIsShared(value: $value )" )
35
+ _prefs .saveBool(PreferenceStores .ONESIGNAL , PreferenceOneSignalKeys .PREFS_OS_LOCATION_SHARED , value)
31
36
_isShared = value
37
+
38
+ onLocationPermissionChanged(value)
32
39
}
33
40
34
41
override fun start () {
@@ -71,7 +78,7 @@ internal class LocationManager(
71
78
var result = false
72
79
withContext(Dispatchers .Main ) {
73
80
if (! isShared) {
74
- return @withContext false
81
+ Logging .warn( " Requesting location permission, but location sharing must also be enabled by setting isShared to true " )
75
82
}
76
83
77
84
val hasFinePermissionGranted =
@@ -179,13 +186,20 @@ internal class LocationManager(
179
186
180
187
// Started from this class or PermissionActivity
181
188
private suspend fun startGetLocation () {
189
+ if (! isShared) {
190
+ return
191
+ }
192
+
182
193
Logging .debug(" LocationManager.startGetLocation()" ) // with lastLocation: " + lastLocation)
183
194
try {
184
195
if (! _locationController .start()) {
185
196
Logging .warn(" LocationManager.startGetLocation: not possible, no location dependency found" )
186
197
}
187
198
} catch (t: Throwable ) {
188
- Logging .warn(" LocationManager.startGetLocation: Location permission exists but there was an error initializing: " , t)
199
+ Logging .warn(
200
+ " LocationManager.startGetLocation: Location permission exists but there was an error initializing: " ,
201
+ t,
202
+ )
189
203
}
190
204
}
191
205
}
0 commit comments