1

Я не могу сделать GoogleApiClient для работы над моим проектом. Я использую LocationServices, OnConnected не стреляет, хотя у меня есть client.connect(), вызванный в методе onStart. Я искал stackoverflow и попробовал решения, но я все еще не могу заставить его работать. Я попытался проверить, был ли я подключен, но client.isConnected() всегда выводит false. мои разрешения:Не удается подключиться к GoogleAPIClient LocationServices.API

android.permission.INTERNET android.permission.ACCESS_COARSE_LOCATION android.permission.ACCESS_FINE_LOCATION

я упускаю что-то здесь?

редактировать:

private GoogleApiClient client; 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_my); 
ButterKnife.inject(this); 

buildGoogleApiClient(); 
} 

protected synchronized void buildGoogleApiClient() { 
client = new GoogleApiClient.Builder(this) 
.addConnectionCallbacks(this) 
.addOnConnectionFailedListener(this) 
.addApi(LocationServices.API).build(); 
} 

@Override 
public void onStart() { 
// client.connect(); 
super.onStart(); 

// ATTENTION: This was auto-generated to implement the App Indexing API. 
// See https://g.co/AppIndexing/AndroidStudio for more information. 
client.connect(); 
Log.e("Connected?", String.valueOf(client.isConnected())); 

} 

public void onConnectionFailed(ConnectionResult connectionResult) { 
Log.e("Failed?", connectionResult.getErrorMessage()); 
} 


@Override 
public void onConnected(Bundle bundle) { 
if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
return; 
} 
mLastLocation = LocationServices.FusedLocationApi.getLastLocation(
client); 
longt = mLastLocation.getLongitude(); 
latt = mLastLocation.getLatitude(); 
if (mLastLocation != null) { 
// mLatitudeText.setText(String.valueOf(mLastLocation.getLatitude())); 
// mLongitudeText.setText(String.valueOf(mLastLocation.getLongitude())); 
} 

} 

ответ

1

Попробуйте это !!

Во-первых: удалить buildGoogleApiClient(); в Oncreate();

Тогда:

public static final int REQUEST_CODE_RESOLUTION = 1; 

@Override 
protected void onResume() { 
    super.onResume(); 
    buildGoogleClient(); 
} 

private void buildGoogleClient(){ 
if(client != null){ 
client = new GoogleApiClient.Builder(this) 
.addApi(LocationServices.API) 
.addConnectionCallbacks(this) 
.addOnConnectionFailedListener(this).build(); 
} 
client.connect(); 
} 

    @Override 
public void onConnectionFailed(ConnectionResult result) { 
    Log.i(TAG, "GoogleApiClient connection failed: " + result.toString()); 
    if (!result.hasResolution()) { 
     // show the localized error dialog. 
     GoogleApiAvailability.getInstance().getErrorDialog(this, result.getErrorCode(), 0).show(); 
     return; 
    } 
    try { 
     result.startResolutionForResult(this, REQUEST_CODE_RESOLUTION); 
    } catch (SendIntentException e) { 
     Log.e(TAG, "Exception while starting resolution activity", e); 
    } 
} 

    @Override 
protected void onActivityResult(int requestCode, int resultCode, 
     Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == REQUEST_CODE_RESOLUTION && resultCode == RESULT_OK) { 
     client.connect(); 

    // Enter code get Latude and Longtude 

    mLastLocation = LocationServices.FusedLocationApi.getLastLocation(client); 
longt = mLastLocation.getLongitude(); 
latt = mLastLocation.getLatitude(); 
if (mLastLocation != null) { 
    mLatitudeText.setText(mLastLocation.getLatitude()+""); 
    mLongitudeText.setText(mLastLocation.getLongitude()+""); 
} 
    } 
} 
+0

он работал, но я получил другую ошибку. не уверен, что это все еще связано. 'GoogleApiClient не настроен для использования API, необходимого для этого вызова. ' – Redan

+0

Вы можете посмотреть учебное пособие по Местоположение клиента Google в http://www.androidhive.info/2015/02/android-location-api-using-google-play -Сервисы/ –