OnConnected () is not called to get location updates (GooglePlayApi for location)

So, I have this code:

package com.entu.bocterapp; import android.content.Context; import android.location.Location; import android.location.LocationListener; import android.os.Bundle; import android.widget.Toast; import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.GooglePlayServicesUtil; import com.google.android.gms.common.api.GoogleApiClient; import com.google.android.gms.location.LocationRequest; import com.google.android.gms.location.LocationServices; public class LocationManager implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener { private Context mContext; private GoogleApiClient mGoogleApiClient; private Location mLastLocation; private LocationRequest mLocationRequest; public LocationManager(Context context) { mContext = context; // if (checkIfGooglePlayServicesAreAvailable()) { //Get Access to the google service api buildGoogleApiClient(); mGoogleApiClient.connect(); } else { //Use Android Location Services //TODO: } } public Location getCoarseLocation() { if (mLastLocation != null) { return mLastLocation; } else return null; } private synchronized void buildGoogleApiClient() { mGoogleApiClient = new GoogleApiClient.Builder(mContext) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .addApi(LocationServices.API) .build(); } private boolean checkIfGooglePlayServicesAreAvailable() { int errorCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(mContext); if (errorCode != ConnectionResult.SUCCESS) { GooglePlayServicesUtil.getErrorDialog(errorCode, (RecentSightings) mContext, 0).show(); return false; } return true; } @Override public void onConnected(Bundle bundle) { Location location = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient); if (location != null) { mLastLocation = location; Toast.makeText(mContext, location.getLongitude() + " , " + location.getLatitude() + " : " + location.getAccuracy(), Toast.LENGTH_LONG).show(); } } @Override public void onConnectionSuspended(int i) { Toast.makeText(mContext, "suspended", Toast.LENGTH_LONG).show(); } @Override public void onConnectionFailed(ConnectionResult connectionResult) { } } 

I am trying to get the location in this class, but onConnected () is never called (I waited 1-2 minutes). I went with a debugger, it says google play services are available.

Does anyone know what I'm doing wrong? Iโ€™m stuck here for hours, I read everything and canโ€™t get it to work.

Hooray!

+6
source share
3 answers

You have to call

 mGoogleApiClient.connect(); 
+12
source

try the following:

 @Override protected void onStart() { if(mGoogleApiClient!=null){ mGoogleApiClient.connect(); } super.onStart(); } @Override protected void onStop() { if(mGoogleApiClient!=null){ if(mGoogleApiClient.isConnected()){ mGoogleApiClient.disconnect(); } } super.onStop(); } 
+1
source

I have the same problem, just an updated version of the class :10.0.1' to

 compile 'com.google.android.gms:play-services-location:10.2.1' 

it works.

+1
source

Source: https://habr.com/ru/post/981924/


All Articles