获取Google Inbox等用户的家庭,工作和已加星标的位置

时间:2015-09-06 23:29:00

标签: android google-maps google-api google-now

在Google收件箱中,您可以暂停留言并选择“选择地点”。它会显示一个列表,其中包含您的家庭和工作地址(来自Google即时),以及您的Google地图个人资料中已加星标的地点。其他Google应用程序(如Keep)也提供类似的功能。

我想在我的应用中实现这一点,但无法找到暴露该信息的正确API。那是谷歌没有向第三方公开的东西(我想那里有滥用的空间)?

如果没有,如何实施? API有哪些数据?

enter image description here

2 个答案:

答案 0 :(得分:13)

Google即时会对您的位置数据(在您的Google帐户设置中启用的Google +位置服务中的所有设备上)利用分析来确定您的家庭和工作地点,除非您专门设置它们。

我在官方Google文档中找到的任何地方都没有明确引用此数据的存储/检索,但此处提供了Google即时中针对此数据的架构: Google Schema - Person

对于任何给定的人实体,存在包含该数据的homeLocationworkLocation属性。

或者(或除此之外),使用Google的Plus平台/ Google身份平台,如果您有经过身份验证的用户,则可以按照 here (with examples) 获取当前用户的任何指定字段(包括currentLocation,组织(包括工作)和地址,如果用户提供的话)。

使用oAuth和原始Google地图供稿网址引用的先前SO问题存在,但接受的答案有些不清楚,当我按照链接并尝试通过身份验证测试时,我收到了404错误他们:Access locations in My Places of a particular account through Google Maps API

与几年前的Google产品论坛发布 here 一样,之前版本的Google Maps Data API允许访问我的地点,确切地说是你所需要的,但它在2013年被弃用并删除了。

最后,这是我认为最好的方法,可能是谷歌使用的(如果它没有被宣布为Google Now),那就是Google Contacts API。用户存在于他们自己的联系人列表中,Google联系人的扩展API允许您使用标准标签获取/设置地址,例如家庭或用户的工作。

这里详细说明:Google Contact Services - App Scripts

答案 1 :(得分:1)

以下是获取用户地址的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'

此处没有家庭或工作地址,我不明白它使用的是哪种地址。但似乎所有用户的地址都应该在这里。