nuevo android google-maps google-api google-now

android - nuevo - inbox by gmail vs gmail



Obtenga las ubicaciones de inicio, trabajo y estrella del usuario, como hace Google Inbox (2)

Cuando está en la Bandeja de entrada de Google va a posponer un mensaje y selecciona ''Elegir lugar'', muestra una lista con las direcciones pobladas y las direcciones destacadas de su perfil de Google Maps. Otras aplicaciones de Google, como Keep también proporcionan una funcionalidad similar.

Me gustaría implementar esto en mi aplicación, pero no pude encontrar la API correcta que expone esa información. ¿Es eso algo que Google no expone a terceros (creo que hay espacio para el abuso allí)?

Si no, ¿cómo se puede implementar esto? ¿Qué API tiene la información?


Aquí está la API para obtener las direcciones de los usuarios

https://developers.google.com/android/reference/com/google/android/gms/identity/intents/Address

mGoogleApiClient = new GoogleApiClient.Builder(this) .addApi(Address.API, new Address.AddressOptions()) .build(); mGoogleApiClient.connect(); ... Address.requestUserAddress(mGoogleApiClient, UserAddressRequest.newBuilder().build(), REQUEST_CODE); @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { ... UserAddress address = UserAddress.fromIntent(data); }

En dependencias

compile ''com.google.android.gms:play-services-identity:7.8.0''

No hay direcciones de Casa o Trabajo aquí, y no entiendo qué tipo de direcciones usa. Pero parece que todas las direcciones de usuario deberían estar aquí.


Google Now utiliza los análisis de sus datos de ubicación (en todos los dispositivos firmados en los servicios de ubicación de Google + habilitados en la configuración de su cuenta de Google) para determinar su ubicación de trabajo y casa, a menos que los configure específicamente.

El almacenamiento / recuperación de estos datos no se menciona explícitamente en ningún lugar que he encontrado en la documentación oficial de Google, pero el esquema en Google Now para estos datos está disponible aquí: Esquema de Google - Persona

Para cualquier entidad de persona dada, una propiedad homeLocation y workLocation existe con esa información.

Alternativamente (o además de), usando Plus Platform / Google Identity Platform de Google, si tiene un usuario autenticado, puede hacer una llamada API como se describe aquí (con ejemplos) para obtener cualquiera de los campos especificados para el usuario actual (incluidos currentLocation, organizaciones (incluido el trabajo) con direcciones, si el usuario las proporcionó).

Existe una pregunta previa de SO que hace referencia al uso de oAuth y raw Google feed urls para extraer los datos, pero la respuesta aceptada es poco clara y cuando seguí los enlaces e intenté autenticar para probarla, recibí 404 errores de todos ellos: Acceda a ubicaciones en Mis lugares de una cuenta en particular a través de la API de Google Maps

También como en una publicación de Foros de productos de Google here varios años, una versión anterior de la API de datos de Google Maps permitió el acceso a Mis lugares , que es por excelencia exactamente lo que necesita, pero fue desaprobado y eliminado en 2013.

Finalmente, y este es el mejor enfoque en mi opinión, y puede ser lo que usa Google (si no está declarado como Google Now), que es la API de Contactos de Google. Existe un usuario en su propia lista de contactos, y la extensa API para Contactos de Google le permite obtener / establecer direcciones con etiquetas estándar, como el hogar o el trabajo para el usuario.

Esto se detalla aquí: Servicios de contacto de Google : secuencias de comandos de la aplicación