Google Now利用您在任何已登录Google帐户且启用了位置服务的设备上的位置数据来确定您的家庭和工作位置,除非您明确设置。
我没有在官方的谷歌文档中发现存储/检索这些数据的明确引用,但是此数据的Google Now模式在此处可用: Google模式-Person
对于任何给定的人实体,都存在一个homeLocation
和workLocation
属性。
或者(或者另外),使用Google的Plus平台/Google身份验证平台,如果您拥有经过身份验证的用户,则可以像此处描述的那样进行API调用(附有示例)以获取当前用户的任何指定字段(包括currentLocation,具有地址的组织(包括工作地点),如果用户提供了它们)。
以前的SO问题引用了使用oAuth和原始Google Maps提要URL来提取数据,但是接受的答案有些不清楚,并且当我按照链接进行身份验证以进行测试时,我从所有链接中收到404错误:通过Google Maps API访问特定帐户的“我的位置”中的位置
正如几年前在Google产品论坛上发表的一篇帖子这里所述,Google Maps数据API的先前版本允许访问My Places,这基本上就是您需要的,但它在2013年被弃用和删除。
最后,这是我认为最佳的方法,也可能是Google使用的方法(如果它没有被声明为Google Now),就是使用Google Contacts API。用户存在于自己的联系人列表中,而Google Contacts的广泛API允许您使用标准标签(例如家庭或工作)获取/设置用户的地址。
这里有详细信息:Google Contact Services - 应用脚本
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'
.getHomeLocation()
和.getWorkLocation()
,这没关系。但是 Google Inbox 从某个地方获取了这些值。一定有办法。 - Krzysztof Kozmic