Android --[Challenging Question] How to Detect countries without any privacy issues or dangerous permissions


So everyone might already know about GDPR or specific EU laws for EU end-users or EU citizens or 31 EU countries.

To provide a "consent dialog" or such a "cookies notice" like on this forum or other website, i need some IF/Case code checking on GMS2 or maybe on the Android java codes??, whether the player is on the specific country or not.

I know there are many solutions, but most of them will make more problems or isn't reliable enough for the objective, e.g.:
1. All about web/online ip address checking
(+)positive is accurate but i think it is overkill as i just need a simple checking in general area, no need to be so specific
(-)negative: must be online, server might not reliable, or can be blocked for multiple tries of checking by spambot checker, can't detect if player is not online or completely offline
2. GPS / location / SIM cards / telephony checking and similarly et cetera.
(+)very accurate but (-)need Android dangerous permissions and more (-)privacy issues
(-)negative: ask more dangerous permissions on Android, players will avoid even before installing, very very bad approach i think

So i have been thinking is there any function of GMS2 or Android system which doesn't need any dangerous permissions, which can check the country of users??
(+) should be OFFLINE
(+) should use any some default constants or variables on the Android system device, such as locale,country codes, or currency, or language , or whatever which i don't know as i am not Android expert, as long as it doesn't need any permissions when player installs the app is so preferred.

IT'S OKAY IF NOT ACCURATE, as long as the specific 31 countries are included (e.g. if 31+ 8 is okay, as long as 31 is included, BUT don't include the other Asia or USA which is too far and unrelated to those countries):
I think about how to accomplish the goal,
i think about some currency for example euros for EU???,

....or maybe timezones checking??? But for Europe it might also include Africa, but i don't have problem with that if it can! As long as the EU is covered.

....or languange (the challenge for language might not be reliable because many users might use EN-US/English which can be the problem as it is too international on earth)

...or i don't know if some GMS2 functions can be used such as a trick to accomplish the objective?? such as non personal data such as "time" or what , or what i don't know..

The country checking NEEDS NOT TO BE VERY SPECIFIC such as longitude GPS/ip address which might be considered as personal data, JUST as region area is okay, which doesn't make more privacy issues.

WHAT I WANT TO APPLY for this question:
if on GMS2 i can check the country of the device or Android user, then i can code something condition checking, IF statements, that will be used ONLY to show the consent dialog for these 31 countries only. Not for other countries at all who don't need and don't care about it or might not be user friendly enough for showing it "on and on" for them while they don't care and just want to play my games and i keep their trusts with my dev reputation that i don't do any bad to them (i already use very minimum permissions for the app, i give them access to enjoy my games, i also don't like to track my players, no analytics used, i just want they play my games, and it is profitable enough through ads which is understandable as it is free to play already, that's it, not more).

What do you think?

Isn't this thread a challenging question enough for you to solve?? :p

Anyone thinking about some "tips" or "tricks" that can employ some non-personal-data variable checking on the Android system? Please share and all indie devs that will use the "to-be-found solution" are forever in debt to you!

Hmm...... my programming question here can also be useful for other legitimate purposes, such as we want to present some localization language settings on our GUI without them have to set it manually perhaps, or other else..
Last edited:


I think you could use this, although it might not be very accurate: system/os_get_region.html

This does not give you the location but the "regional language", so maybe you can get German->Germany, German->Austria and things like that.
Yeah, although it might not be very accurate, i think at least i can use it to exclude some irrelevant countries outside of the region and vice versa. Hmm, so i need to test it on multiple Android devices to learn more how the code is behaving before setting up some switch case statements then.

@2Dcube Thank you so much for the GML solution!