Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to determine an Android device's current country location regardless of user location settings?

I need to determine the country (iso3) the device is in even if the user's device has GPS turned off and does not allow apps to access it's location.

I also need to account for tablets that have no sim card and thus cannot use telephonyManager.

For this reason I don't believe I can use the location manager (also because of these reasons: LocationManager requestLocationUpdates doesn't work)

The approach I am thinking I will need is to make a simple HTTP request to a third party ip location api: e.g. http://www.ipinfodb.com/ip_location_api.php or https://freegeoip.net

Is this the best way to do it? What is the best open api to use?

like image 743
JohnRock Avatar asked Mar 06 '15 20:03

JohnRock


2 Answers

Your approach of third party ip location api seems right to currently. May be This would help you

http://ip-api.com/docs/api:json

http://ip-api.com/json

like image 96
Shadik Khan Avatar answered Nov 20 '22 05:11

Shadik Khan


You can use the TelephonyManager

TelephonyManager tm = (TelephonyManager)this.getSystemService(this.TELEPHONY_SERVICE);
String countryCode = tm.getNetworkCountryIso();

Update: Since you cannot use telephony I would suggest trying this, as it get's the users input from when they setup the device.

String locale = context.getResources().getConfiguration().locale.getCountry();
like image 4
Tristan Wiley Avatar answered Nov 20 '22 04:11

Tristan Wiley