android - setup - googleapiclient python
Google Api Client en algĂșn momento NULL en onConnected (6)
Implemento GoogleApiClient
como a continuación:
mGoogleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this, 0 /* clientId */, this)
.addApi(LocationServices.API)
.addApi(Places.GEO_DATA_API)
.addConnectionCallbacks(this)
.build();
Pero en el método onConnected
mGoogleApiClient => value null. En este caso, trato de reconstruir googleApiClient pero me sale un error:
java.lang.IllegalStateException: Already managing a GoogleApiClient with id 0
Por favor, ayúdeme a entender por qué mGoogleApiClient a veces es NULL aunque está conectado: |. (Notas. Revisé todo el código fuente, nunca configuré GoogleApiClient en NULL).
¡Gracias!
Actualizar
Mi problema ahora se resolvió después de intentar usar la última versión de play-service.
Gracias a todos por ayuda.
Creo que será mejor que mires esta referencia.
página de referencia de "público GoogleApiClient.Builder enableAutoManage"
En esta página se muestra que, a través de IllegalStateException si clientId ya se está administrando automáticamente. Por lo tanto, compruebe su código con
.enableAutoManage(this, 0 /* clientId */, this)
Creo que si la excepción en su código, podría devolver cero como no completado.
Si está enfrentando este problema cuando intenta reinicializar mGoogleApiClient, simplemente elimine
.enableAutoManage(this, 0 /* clientId */, this)
Utilizar
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addApi(LocationServices.API)
.addApi(Places.GEO_DATA_API)
.addConnectionCallbacks(this)
.build();
y funcionará bien
Tuve el mismo problema (ya gestionaba un GoogleApiClient con id 0) en un fragmento, y finalmente lo resolví:
- Sobrescribe onStart () y onStop normalmente
- Agregue en onStop () esta llamada: "yourApiGoogle" .stopAutoManage (context);
Que tengas un buen día...
Yo tuve el mismo problema. Todo lo que hice para resolverlo es eliminar .enableAutoManage(this, 0 /* clientId */, this)
porque simplemente no funciona correctamente de lo que asumí. Luego, anula estos métodos en tu actividad:
@Override
public void onStart() {
super.onStart();
if (mGoogleApiClient != null) {
mGoogleApiClient.connect();
}
}
@Override
public void onStop() {
if (mGoogleApiClient != null && mGoogleApiClient.isConnected()) {
mGoogleApiClient.disconnect();
}
super.onStop();
}
Técnicamente, eso es lo que .enableAutoManage(this, 0 /* clientId */, this)
, excepto que ahora, todo funciona como debería.
Documentation dice: En un momento dado, solo se permite un cliente administrado automáticamente por ID. Para reutilizar una identificación, primero debe llamar a stopAutoManage(FragmentActivity)
en el cliente anterior.
Lo que hago personalmente es hacer una llamada al método de abajo antes de abandonar la actividad, en la que estoy utilizando el cliente de Google Api.
private void stopAutoManage() {
if (mGoogleApiClient != null)
mGoogleApiClient.stopAutoManage(mActivity);
}
build()
llama onConnected
inmediatamente si ya está conectado. Por lo tanto, su variable podría ser nula.
Mejor uso
mGoogleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this, 0 /* clientId */, this)
.addApi(LocationServices.API)
.addApi(Places.GEO_DATA_API)
.addConnectionCallbacks(this);
mGoogleApiClient.build();