What Country is the User Currently In?

匿名 (未验证) 提交于 2019-12-03 02:26:02

问题:

I've looked around a bit on stackoverflow and Google Groups and haven't really found an answer for this exact question.

I simply want to be able to know what country the user of an Android phone is currently in.

I assume the TelephonyManager doesn't work if the user is using wifi only. Is this true?

We've tried passing the user's current latitude and longitude using android.location.Geocoder, but it's really flaky. It will frequently return empty results. Sometimes we can keep asking it and it will eventually return results, but it's really ugly. Is there a more reliable way?

Thanks, Rob Sz

回答1:

You could try reverse Geo Coding :)

http://code.google.com/apis/maps/documentation/geocoding/ 

Check this link. The country is returned in JSON.

http://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&sensor=false 

I honestly do not know whether this will work in all scenarios but I believe this is something that can help.

EDIT: Looks like it kinda works :)

Tried with my country and seems to work perfectly.

http://maps.googleapis.com/maps/api/geocode/json?latlng=6.822716,79.878159&sensor=false

You will get

{   "status": "ZERO_RESULTS",   "results": [ ] } 

for example, if the user is in the middle of an ocean by any chance :P



回答2:

What about using an IP-based geolocation service? I would guess that due to regulatory differences network divisions are usually fairly country specific, except in cases such as corporate VPN's where you are virtually plugged into the net somewhere else?



回答3:

Try using a web service, like Chris suggested. Here's a list of a few that will do the trick:

http://free-web-services.com/web-services/geo/ip-to-location/

I'm using http://www.hostip.info, which is nice and simple.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!