Подтвердить что ты не робот

Получите доступ к домашним, работающим и избранным местоположениям пользователей, таким как Google Inbox

Когда в папке "Входящие" Google вы переходите к отсрочке сообщения и выбираете "Выбрать место", он отображает список с вашим домашним и рабочим адресом (из Google Now), а также отмеченные места в вашем профиле Карт Google. Другие приложения Google, такие как Keep, также предоставляют аналогичную функциональность.

Я хотел бы реализовать это в своем приложении, но не смог найти правильный API, который раскрывает эту информацию. Это то, что Google не предоставляет третьим сторонам (я думаю, там есть место для злоупотреблений)?

Если нет, как это можно реализовать? Какой API имеет данные?

введите описание изображения здесь

4b9b3361

Ответ 1

Google Now использует аналитические данные о ваших данных о местоположении (на всех и всех устройствах, подписанных в сервисах Google+ для определения местоположения, включенных в настройках учетной записи Google), для определения местоположения вашего дома и работы, если вы специально их не задали.

Хранение/извлечение этих данных прямо не упоминается нигде, что я нашел в официальной документации Google, но схема в Google Now для этих данных доступна здесь: Google Schema - Person

Для любого данного субъекта человека существуют свойства homeLocation и workLocation.

В качестве альтернативы (или в дополнение к), используя платформу Google Plus Platform/Google Identity Platform, если у вас есть аутентифицированный пользователь, вы можете сделать вызов API, как описано здесь (с примерами), чтобы получить любое из указанных полей для текущего пользователя (включая currentLocation, организации (включая работу) с адресами, если пользователь предоставил их).

Предыдущий вопрос SO, который ссылается на использование ссылок oAuth и raw Google Maps для вывода данных, существует, но принятый ответ несколько неясен, и когда я следил за ссылками и пытался пройти проверку подлинности, я получил 404 ошибки из всех из них: Доступ к местам доступа в My Places определенной учетной записи через API Карт Google

Также, как и на форумах Google Product, после здесь, предыдущая версия Google Maps API данных разрешил доступ к My Places, что в основном является именно тем, что вам нужно, но оно было устаревшим и удалено в 2013 году.

Наконец, и это лучший подход, на мой взгляд, и может быть то, что использует Google (если оно не объявлено как Google Now), то есть API контактов Google. Пользователь существует в своем списке контактов, а обширный API для контактов Google позволяет вам получать/устанавливать адреса со стандартными ярлыками, такими как домашний или рабочий для пользователя.

Здесь подробно описано: Службы Google для контактов - Скрипты приложений

Ответ 2

Вот API для получения адресов пользователей

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);
}

В зависимостях

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

Здесь нет домашних или рабочих адресов, и я не понимаю, какие адреса он использует. Но, похоже, здесь должны быть все адреса пользователей.