«LocationServices.FusedLocationApi.getLastLocation (mGoogleApiClient)» не возвращает местоположение, если GPS отключен

Я пытаюсь получить текущее местоположение пользователя, и для этого я следую этому учебнику. .

Я запускаю следующий код на устройстве под управлением Android Lollipop, поэтому здесь нет проблем с разрешением во время выполнения.

Вот мой код (обновление 1.0):

@Override
    public void onConnected(@Nullable Bundle bundle) {

    Log.d("onConnected", "called");

    mLocationRequest = new LocationRequest();
    mLocationRequest.setInterval(1000);
    mLocationRequest.setFastestInterval(1000);
    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

    LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this);

   }

@Override
    public void onLocationChanged(Location location) {
        mLastLocation = location;
        if (mLastLocation != null) {
            currentLatDouble = mLastLocation.getLatitude();
            currentLngDouble = mLastLocation.getLongitude();

            Log.d("cltLC", String.valueOf(currentLatDouble));
            Log.d("clntLC", String.valueOf(currentLngDouble));
        }
    }

здесь onConnected распечатывается, а clt и clnt нет.

Вот разрешения:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>

Вот build.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.0"

    defaultConfig {
        applicationId "com.xxx.aaa"
        minSdkVersion 16
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
        vectorDrawables.useSupportLibrary = true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    repositories {
        maven {
            url "https://jitpack.io"
        }
    }
    dexOptions {
        javaMaxHeapSize "4g"
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:25.1.0'
    compile 'com.android.support:design:25.1.0'
    compile 'com.google.android.gms:play-services:10.0.1'
    compile 'com.google.android.gms:play-services-location:10.0.1'
    compile 'com.google.firebase:firebase-database:10.0.1'
    compile 'com.firebase:geofire-android:2.1.0'
}

apply plugin: 'com.google.gms.google-services'

Я не хочу, чтобы пользователь включал GPS на этом этапе и хотел бы получить текущее местоположение без него.

Я обновил код, увидев этот ответ, но снова ничего не происходит, если GPS выключен!

Пожалуйста, дайте мне знать, в чем здесь проблема.


person Hammad Nasir    schedule 19.12.2016    source источник
comment
вы включили сетевое местоположение в настройках gps?   -  person masoud vali    schedule 19.12.2016
comment
@masoudvali, ты говоришь о мобильных данных или о Wi-Fi? Мои мобильные данные включены.   -  person Hammad Nasir    schedule 19.12.2016
comment
это поможет вам howtogeek .com/211186/   -  person masoud vali    schedule 19.12.2016
comment
@masoudvali, что там в ссылке, чтобы помочь мне, братан? Пожалуйста, объясните подробно.   -  person Hammad Nasir    schedule 19.12.2016
comment
Если режим определения местоположения отключен, вы не сможете определить местоположение. Этот параметр должен быть установлен в режим экономии заряда батареи, чтобы использовать только провайдера сетевого местоположения.   -  person Daniel Nugent    schedule 19.12.2016
comment
@DanielNugent, но для этого мне нужно включить GPS, я не хочу включать его для получения местоположения, когда пользователь запускает приложение. Код, который у меня был ранее, успешно извлекал местоположение без GPS на устройствах под управлением Android L и ниже, но чтобы заставить его работать на Android M и выше, я изменил код, и теперь он не работает даже в Android L и ниже.   -  person Hammad Nasir    schedule 19.12.2016