У меня небольшая проблема.
Я получил все необходимые разрешения для определения местоположения у пользователя.
Я создал Broadcast Receiver, как показано ниже:
public class GpsLocationReceiver : BroadcastReceiver() {
private lateinit var mLocationManager: LocationManager
override fun onReceive(context: Context, intent: Intent) {
LogUtil.e(">>>On Receive","called")
mLocationManager = context.getSystemService(Context.LOCATION_SERVICE) as LocationManager
if (mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
LogUtil.e(">>>On Receive","called inside")
GetLocationAccessFragment().getAndSaveCurrentLocation()
}
}
}
В моем манифесте я сделал следующее:
<receiver android:name=".ui.user_profile.fragments.GetLocationAccessFragment$GpsLocationReceiver">
<intent-filter>
<action android:name="android.location.PROVIDERS_CHANGED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
Теперь я регистрирую его в моем методе init () фрагмента:
mContext.registerReceiver(
GpsLocationReceiver(),
IntentFilter(LocationManager.PROVIDERS_CHANGED_ACTION)
и отменил регистрацию после завершения работы:
mContext.unregisterReceiver(GpsLocationReceiver())
Но, к сожалению, метод OnReceive () не вызывается, когда я включаю / выключаю GPS на моем устройстве. В чем может быть проблема?