I want to get the user's device country and without using GPS and any sensitive data.
By using TelephonyManager::getSimCountryISO()
, I can get the country depending on the SIM card. But sadly that doesn't work if the device doesn't have a SIM (e.g Tablet).
Using the IP is a nice answer, but alot of users now use VPNs and Proxies which change the device IP, there for giving a false answer to where the device is.
The location is the most accurate answer, but there is still things such as fake location, and user's location is a very sensitive data to ask for, even for once.
P.S: All
Locale
answers will be deleted or down voted, any developer would know that the Locale is user defined not device defined. Same thing about Timezones.