Существует еще одна возможность, которая на самом деле не связана с тем, является ли устройство Oreo или нет, но в действиях по настройке, которые вы перенаправляете через startActivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS));
, вы можете не включить самого поставщика GPS. Кроме того, поскольку вы сказали Oreo и выше , я думаю, что вы уже дали разрешение на android.manifest.Permission.ACCESS_FINE_LOCATION
как во время выполнения, так и в манифесте.
Если вы заметили, есть 3 провайдера: GPS_PROVIDER
, NETWORK_PROVIDER
и PASSIVE_PROVIDER
. Вы используете GPS_PROVIDER
для получения своего местоположения, но если оно не включено через настройки, оно может вернуть false. Пока вы пытаетесь это сделать, мог быть выбран только сетевой поставщик.
Вот изображение того, о чем я говорю (из HUAWEI-P20 Lite - Android 8.0.0 API 26):