GooglePlayServicesUtil error botón de diálogo no hace nada

Estoy agregando un MapFragment a mi aplicación y tengo el siguiente código, adaptado de un tutorial de mapas:

private boolean servicesConnected() { // Check that Google Play services is available int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this); // If Google Play services is available if (ConnectionResult.SUCCESS == resultCode) { // In debug mode, log the status Log.d("Location Updates", "Google Play services is available."); // Continue return true; // Google Play services was not available for some reason } else { GooglePlayServicesUtil.getErrorDialog(resultCode, this, 7).show(); return false; } } 

Estoy probando en una pestaña 10.1 de la pestaña de configuración de fábrica con los servicios de reproducción de Google obsoletos. Así que cuando intento abrir el MapFragment llamo a servicesConnected() para comprobarlo y, como es de esperar, obtengo un diálogo que me dice que necesito los Servicios de Google Play. En la parte inferior del cuadro de diálogo tiene un botón "Obtener servicios de Google Play", pero cuando hago clic en él, no hace nada. Mi LogCat produce la siguiente salida:

 07-23 15:30:43.580: W/GooglePlayServicesUtil(2515): Google Play services is missing. 07-23 15:30:48.510: E/SettingsRedirect(2515): Can't redirect to app settings for Google Play services 

Tengo el siguiente método onConnectionFailed (básicamente una copia-pega del sitio para desarrolladores de Android):

 public void onConnectionFailed(ConnectionResult connectionResult) { /* * Google Play services can resolve some errors it detects. * If the error has a resolution, try sending an Intent to * start a Google Play services activity that can resolve * error. */ if (connectionResult.hasResolution()) { try { // Start an Activity that tries to resolve the error connectionResult.startResolutionForResult( this, CONNECTION_FAILURE_RESOLUTION_REQUEST); /* * Thrown if Google Play services canceled the original * PendingIntent */ } catch (IntentSender.SendIntentException e) { // Log the error e.printStackTrace(); } } else { /* * If no resolution is available, display a dialog to the * user with the error. */ GooglePlayServicesUtil.getErrorDialog(connectionResult.getErrorCode(), this, 7).show(); } } 

¿Por qué no funciona esto? Cualquier ayuda sería grande.

Aquí está la página de desarrollo de Android de la que estoy trabajando, y aquí también hay un post de SO relacionado con ella.

Editar

Me di cuenta de que no tenía una cuenta de Google configurada en el dispositivo, así que configuré uno, pero no hizo ninguna diferencia.

Este código funciona para mí:

 boolean checkGooglePlayServicesAvailable() { final int connectionStatusCode = GooglePlayServicesUtil .isGooglePlayServicesAvailable(getActivity()); Log.i(DEBUG_TAG, "checkGooglePlayServicesAvailable, connectionStatusCode=" + connectionStatusCode); if (GooglePlayServicesUtil.isUserRecoverableError(connectionStatusCode)) { showGooglePlayServicesAvailabilityErrorDialog(connectionStatusCode); return false; } Toast t = Toast.makeText(getActivity(), "Google Play service available", Toast.LENGTH_LONG); t.show(); return true; } void showGooglePlayServicesAvailabilityErrorDialog( final int connectionStatusCode) { getActivity().runOnUiThread(new Runnable() { public void run() { final Dialog dialog = GooglePlayServicesUtil.getErrorDialog( connectionStatusCode, getActivity(), REQUEST_GOOGLE_PLAY_SERVICES); if (dialog == null) { Log.e(DEBUG_TAG, "couldn't get GooglePlayServicesUtil.getErrorDialog"); Toast.makeText(getActivity(), "incompatible version of Google Play Services", Toast.LENGTH_LONG).show(); } //this was wrong here -->dialog.show(); } }); } 

Me encontré con el mismo problema. La cosa es que el diálogo se debe crear en el hilo de interfaz de usuario, y la función show () también se debe llamar en el subproceso de interfaz de usuario.

  • Cómo utilizar RouteBoxer.js para Google Map en Android
  • InfoWindow (Google Maps) captura de un evento de cierre de la ventana
  • Como llegar "Bus Service No" usando google api
  • Importar google-play-service dependencia cruz roja
  • Android || Obtener la información actual de la ruta de Google Maps
  • Grupo de mapas de Google con dirección
  • Android Google Map InfoWindow punto de anclaje después de la rotación del marcador
  • Google Maps Android: el mapa de repente no se muestra
  • FindFragmentById (R.id.map) devuelve null en Android L
  • ¿Asir la ubicación del usuario con google maps v2 en android?
  • ¿Cómo pueden las aplicaciones usar Google Offline Maps de Android 4+?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.