Google PlacePicker se cierra inmediatamente después del lanzamiento

Estoy desarrollando una aplicación para Android y estaba buscando en Google Places algunas funcionalidades dentro de la aplicación. Google ha publicado recientemente la función PlacePicker, que es lo que estoy utilizando. He seguido las guías de Google y guías de inicio rápido para el "T". La funcionalidad funcionaba increíble desde hace tres horas y ahora cuando voy a probarlo, se lanza y luego se cierra inmediatamente sin errores arrojados en el seguimiento de la pila. Aquí es cómo estoy usando el código:

Esto está dentro de un fragmento.

// The Location Selection from Google Place Picker where.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try { launchPlace(); } catch (GooglePlayServicesNotAvailableException | GooglePlayServicesRepairableException e) { e.printStackTrace(); } } }); 

Esto está dentro de los fragmentos onCreateView.

El método launchPlace () se define como sigue.

 // Start Google Place Picker Code ************************************************************** public void launchPlace() throws GooglePlayServicesNotAvailableException, GooglePlayServicesRepairableException { PLACE_PICKER_REQUEST = 1; PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder(); Context context = getActivity().getApplicationContext(); startActivityForResult(builder.build(context), PLACE_PICKER_REQUEST); } public void onActivityResult(int requestCode, int resultCode, Intent data) { String badLocation = "That location is not valid for this app, please select a valid location"; if (requestCode == PLACE_PICKER_REQUEST) { if (resultCode == Activity.RESULT_OK) { place = PlacePicker.getPlace(data, getActivity().getApplicationContext()); if (place.getPlaceTypes().contains(34)) { if (place.getPlaceTypes().contains(9) || place.getPlaceTypes().contains(15) || place.getPlaceTypes().contains(38) || place.getPlaceTypes().contains(67) || place.getPlaceTypes().contains(79)) { where.setText(place.getName()); loc = true; } else { Toast.makeText(getActivity().getApplicationContext(), badLocation, Toast.LENGTH_LONG).show(); try { launchPlace(); } catch (GooglePlayServicesNotAvailableException | GooglePlayServicesRepairableException e) { e.printStackTrace(); } } } } } } 

Este código trabajó anteriormente (hace 3 horas) y ahora no. Esto es lo que dice LogCat: (Android Studio)

 04-21 15:48:02.320 5045-5045/com.siliconmindtech.trofi D/ViewRootImpl﹕ ViewPostImeInputStage ACTION_DOWN 04-21 15:48:02.680 5045-5124/com.siliconmindtech.trofi D/OpenGLRenderer﹕ endAllStagingAnimators on 0xa1a55600 (InsetDrawable) with handle 0xa185dff0 04-21 15:48:05.000 5045-5121/com.siliconmindtech.trofi I/System.out﹕ (HTTPLog)-Static: isSBSettingEnabled false 04-21 15:48:05.060 5045-5045/com.siliconmindtech.trofi I/Timeline﹕ Timeline: Activity_idle id: android.os.BinderProxy@215c768a time:9757022 

Si alguien sabe de una manera de ayudar con esto que sería increíble, sé que Google PlacePicker es bastante nuevo, pero soy un desarrollador de Android novato y se siente como alguien tiene una mejor comprensión de I. Cualquier y toda la ayuda sería apreciada. Si más información es requerida por favor hágamelo saber. Utilizamos GitHub así que he vuelto todo el camino de vuelta a cuando una vez funcionó, sin embargo, nada cambió, todavía se cierra (el selector, no la aplicación). He habilitado la API de Google Places y la API de Google Places para Android en la consola de desarrollo, tampoco hay ayuda. Llega a la pantalla "Actualizar su ubicación" y luego se detiene.

EDIT: Este es el LogCat entero, desde el lanzamiento (En un Samsung Galaxy S5) hasta el PlacePicker que comienza (Una navegación anterior a esa acción) y luego se cierra y regresa a la aplicación. ¿Es esto lo que querías decir?

 04-21 16:56:26.740 27318-27318/com.siliconmindtech.trofi D/ResourcesManager﹕ creating new AssetManager and set to /data/app/com.siliconmindtech.trofi-1/base.apk 04-21 16:56:26.910 27318-27318/com.siliconmindtech.trofi D/AbsListView﹕ Get MotionRecognitionManager 04-21 16:56:26.910 27318-27340/com.siliconmindtech.trofi I/System.out﹕ (HTTPLog)-Static: isSBSettingEnabled false 04-21 16:56:26.910 27318-27340/com.siliconmindtech.trofi I/System.out﹕ (HTTPLog)-Static: isShipBuild true 04-21 16:56:26.910 27318-27340/com.siliconmindtech.trofi I/System.out﹕ (HTTPLog)-Thread-13137-1066627414: SmartBonding Enabling is false, SHIP_BUILD is true, log to file is false, DBG is false 04-21 16:56:26.910 27318-27340/com.siliconmindtech.trofi I/System.out﹕ (HTTPLog)-Static: isSBSettingEnabled false 04-21 16:56:26.910 27318-27318/com.siliconmindtech.trofi D/AbsListView﹕ Get MotionRecognitionManager 04-21 16:56:26.940 27318-27318/com.siliconmindtech.trofi D/Activity﹕ performCreate Call secproduct feature valuefalse 04-21 16:56:26.940 27318-27318/com.siliconmindtech.trofi D/Activity﹕ performCreate Call debug elastic valuetrue 04-21 16:56:26.950 27318-27318/com.siliconmindtech.trofi D/AbsListView﹕ Get MotionRecognitionManager 04-21 16:56:26.970 27318-27350/com.siliconmindtech.trofi D/OpenGLRenderer﹕ Render dirty regions requested: true 04-21 16:56:27.030 27318-27350/com.siliconmindtech.trofi I/Adreno-EGL﹕ <qeglDrvAPI_eglInitialize:410>: EGL 1.4 QUALCOMM build: () OpenGL ES Shader Compiler Version: E031.25.01.03 Build Date: 10/28/14 Tue Local Branch: LA.BF.1.1_RB1_20141028_021_patches2 Remote Branch: Local Patches: Reconstruct Branch: 04-21 16:56:27.030 27318-27350/com.siliconmindtech.trofi I/OpenGLRenderer﹕ Initialized EGL, version 1.4 04-21 16:56:27.050 27318-27350/com.siliconmindtech.trofi I/OpenGLRenderer﹕ HWUI protection enabled for context , &this =0xa23090d8 ,&mEglDisplay = 1 , &mEglConfig = 8 04-21 16:56:27.050 27318-27350/com.siliconmindtech.trofi D/OpenGLRenderer﹕ Enabling debug mode 0 04-21 16:56:27.050 27318-27340/com.siliconmindtech.trofi I/System.out﹕ KnoxVpnUidStorageknoxVpnSupported API value returned is false 04-21 16:56:27.240 27318-27350/com.siliconmindtech.trofi V/RenderScript﹕ Application requested CPU execution 04-21 16:56:27.260 27318-27350/com.siliconmindtech.trofi V/RenderScript﹕ 0xa2377a00 Launching thread(s), CPUs 4 04-21 16:56:27.310 27318-27318/com.siliconmindtech.trofi I/Timeline﹕ Timeline: Activity_idle id: android.os.BinderProxy@344b9848 time:13859270 04-21 16:56:29.700 27318-27318/com.siliconmindtech.trofi D/ViewRootImpl﹕ ViewPostImeInputStage ACTION_DOWN 04-21 16:56:31.850 27318-27318/com.siliconmindtech.trofi D/ViewRootImpl﹕ ViewPostImeInputStage ACTION_DOWN 04-21 16:56:31.970 27318-27318/com.siliconmindtech.trofi I/Places﹕ Got here! 04-21 16:56:32.300 27318-27350/com.siliconmindtech.trofi D/OpenGLRenderer﹕ endAllStagingAnimators on 0xa196d600 (InsetDrawable) with handle 0xaf7fc350 04-21 16:56:32.740 27318-27318/com.siliconmindtech.trofi I/Timeline﹕ Timeline: Activity_idle id: android.os.BinderProxy@344b9848 time:13864703 

El LogCat anterior es Verbose.

Solución: No sea un novato como yo, me había olvidado de añadir mi clave de API de Google a mi android_manifest.xml … Me disculpo.

Activa la API de Google Places para Android en tu consola de Google para desarrolladores.

No olvide especificar su clave de API en AndroidManifest :

 <meta-data android:name="com.google.android.geo.API_KEY" android:value="ADD_YOUR_API_KEY_HERE" /> 

Creo que cuando Google hizo cambios en su API el 20/04/2015 modificaron la API de lugares que el PlacePicker utiliza intrínsecamente. La solución que trabajó para mí es la siguiente:

  1. Accede a la consola de Google para programadores ( https://console.developers.google.com/project )
  2. Vaya a su proyecto si lo ha hecho. Si no aparece aquí: https://developers.google.com/console/help/
  3. Navegue hasta "APIs & auth" luego a "Credentials" en el lado izquierdo de la consola. No tengo suficiente representante para publicar una foto para orientación …
  4. Cree una nueva clave, aparece en Acceso público a la API en la ventana Credenciales. Necesitará su huella digital SHA1 para recibir la llave. Las direcciones que usé están aquí: ¿Cómo obtener el certificado de huella digital SHA-1 en Android Studio para el modo de depuración?
  5. La ubicación en la que ingresa su huella digital SHA1 debe estar en este formato: (Su clave, 20 valores hexadecimales separados por ":"); com.su paquete.yourapp
  6. Copie su clave de API que se genera. Deberá agregar la huella digital de cada desarrollador en el mismo formato anterior para que funcione para otros desarrolladores.
  7. Agrega la clave a tu AndroidManifest.xml
 <application ... <meta-data android:name="com.google.android.geo.API_KEY" android:value="@string/google_api_key" /> ... </application> 

Tengo el mismo problema. Añado la clave de mapa de Google <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="@string/google_maps_key"/> en el archivo de manifiesto. El cajero se cierra inmediatamente. Luego, también agrego <meta-data android:name="com.google.android.geo.API_KEY" android:value="@string/google_api_key" /> El Selector de lugar muestra, pero cuando abro el mapa, mi aplicación era Fuerza cierre, y registro como abajo.

 RuntimeException: The API key can only be specified once. It is recommended that you use the meta-data tag with the name: com.google.android.maps.v2.API_KEY in the <application> element of AndroidManifest.xml at com.google.maps.api.android.lib6.d.fb.a(Unknown Source) at com.google.maps.api.android.lib6.aga(Unknown Source) at com.google.android.gms.maps.internal.CreatorImpl.b(Unknown Source) at com.google.android.gms.maps.internal.CreatorImpl.b(Unknown Source) at com.google.android.gms.maps.internal.i.onTransact(SourceFile:62) at android.os.Binder.transact(Binder.java:364) at com.google.android.gms.maps.internal.zzc$zza$zza.zzj(Unknown Source) at com.google.android.gms.maps.SupportMapFragment$zzb.zzqs(Unknown Source) at com.google.android.gms.maps.SupportMapFragment$zzb.zza(Unknown Source) at com.google.android.gms.dynamic.zza.zza(Unknown Source) at com.google.android.gms.dynamic.zza.onCreate(Unknown Source) at com.google.android.gms.maps.SupportMapFragment.onCreate(Unknown Source) at android.support.v4.app.Fragment.performCreate(Fragment.java:1763) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:915) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1136) at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1499) at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:456) at android.os.Handler.handleCallback(Handler.java:733) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5103) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:606) at dalvik.system.NativeStart.main(Native Method) 

Trato de eliminar <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="@string/google_maps_key"/> pero mantener <meta-data android:name="com.google.android.geo.API_KEY" android:value="@string/google_api_key" /> Y funciona bien, ahora, y no sé por qué.

Reemplazar su etiqueta de meta datos en el mainfeast .. que funciona para mí ..

  <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="YOUR ANDROID KEY" /> 

con

  <meta-data android:name="com.google.android.geo.API_KEY" android:value="YOUR ANDROID KEY" /> 

buena suerte

Cómo solucioné este error al obtener una clave de API (en la página de desarrolladores de Google), la ubicación en la que introduzca su nombre de paquete introduzca el nombre completo del paquete. ¡Esto está disponible en tu manifiesto android!

  • ¿Cómo obtener todos los grandes almacenes presentes en una ciudad en Android con google lugares?
  • JsonHttpParser está obsoleto
  • Google Places API se bloquea después del inicio
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.