2015-03-06 11 views
5

Muszę określić kraj (iso3) urządzenia, nawet jeśli urządzenie użytkownika ma wyłączony GPS i nie pozwala aplikacjom na dostęp do jego lokalizacji.Jak określić bieżącą lokalizację urządzenia z systemem Android bez względu na ustawienia lokalizacji użytkownika?

Potrzebuję również konta dla tabletów, które nie mają karty SIM, a tym samym nie mogą używać operatora telefonii.

Z tego powodu nie wierzę mogę użyć menedżera lokalizacji (również z powodu tych powodów: LocationManager requestLocationUpdates doesn't work)

Podejście myślę będę musiał to zrobić prosty żądania HTTP na rzecz osoby trzeciej Lokalizacja ip api: np http://www.ipinfodb.com/ip_location_api.php lub https://freegeoip.net

Jest to najlepszy sposób to zrobić? Jaki jest najlepszy otwarty interfejs API?

+0

Przechowywać VPN i sieci korporacyjnych w umyśle. Pewna sieć korporacyjna sprawiła, że ​​zostałem przeniesiony na Tajwan, gdy jestem w Indiach. Twoi użytkownicy byliby wkurzeni, gdyby mieli licencję na korzystanie z Twojej aplikacji w Indiach, ale Twoja aplikacja wyświetli okno dialogowe z napisem "Przepraszamy, Tajwan nie jest obsługiwany". –

Odpowiedz

5

Wygląda na to, że Twoje podejście do api aplikacji IP strony trzeciej wydaje się obecnie aktualne. Może być to pomoże Ci

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

http://ip-api.com/json

+0

Ta usługa wydaje się działać świetnie, ale jaka to usługa? Nie ma informacji o zasadach świadczenia usługi. – JohnRock

+0

Zgodnie z moim badaniem i rozwojem, a ich nie jest – Sadiq

+0

będę oznaczyć to jako prawidłowe, ponieważ choć nie korzystam z wyżej wymienionej usługi, zdecydowałem się na niestandardowy punkt końcowy api, który zbudowaliśmy, aby odpowiedzieć na to pytanie, a nie polegać na urządzeniu. – JohnRock

3

Można użyć TelephonyManager

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

Aktualizacja: Ponieważ nie można korzystać z telefonii Proponuję wypróbowania tego, jak dostać to wejście użytkowników od kiedy oni konfiguracja urządzenia.

String locale = context.getResources().getConfiguration().locale.getCountry(); 
+0

Tablety bez kart SIM nie będą miały operatora telefonii komórkowej, więc nie mogę na tym polegać. Zaktualizowałem moje pytanie, aby to uwzględnić. Dzięki – JohnRock

+0

To ciekawy pomysł. Nie próbowałem, ale czy to jest nie do zniesienia? Nie mogłem polegać na czymś, co użytkownik mógł ustawić ad hoc. – JohnRock

+0

Nie jestem pewien, czy mogę zapytać, do czego będziesz tego używać? –

Powiązane problemy