2015-03-06 15 views
5

Devo determinare il paese (iso3) in cui si trova il dispositivo anche se il dispositivo dell'utente ha il GPS disattivato e non consente alle app di accedere alla sua posizione.Come determinare la posizione del Paese attuale di un dispositivo Android indipendentemente dalle impostazioni della posizione dell'utente?

Devo anche tenere conto dei tablet che non hanno una scheda SIM e quindi non possono usare il gestore telefonico.

Per questo motivo io non credo di poter utilizzare il gestore di posizione (anche a causa di questi motivi: LocationManager requestLocationUpdates doesn't work)

L'approccio che sto pensando ho bisogno è quello di fare una semplice richiesta HTTP a un terzo ip location api: es http://www.ipinfodb.com/ip_location_api.php o https://freegeoip.net

È questo il modo migliore per farlo? Qual è la migliore open open da usare?

+0

Tenere VPN e reti aziendali in mente. Una certa rete aziendale mi ha portato a geolocalizzarmi a Taiwan quando sono in India. I tuoi utenti sarebbero incazzati se sono autorizzati a utilizzare la tua app in India, ma la tua app apre una finestra di dialogo che dice "Mi dispiace, Taiwan non è supportato". –

risposta

5

L'approccio di IP location api di terze parti sembra corretto al momento. Può essere Ciò contribuirebbe

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

http://ip-api.com/json

+0

Quel servizio sembra funzionare alla grande, ma che servizio è questo? Non ci sono informazioni sulle regole del servizio. – JohnRock

+0

Come per la mia R & S e l'esperienza, il loro non è – Sadiq

+0

contrassegnerò questo come corretto perché anche se non sto utilizzando il servizio di cui sopra, ho deciso su un endpoint personalizzato API che abbiamo costruito per rispondere a questa domanda piuttosto che fare affidamento sul dispositivo. – JohnRock

3

È possibile utilizzare il TelephonyManager

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

Aggiornamento: Dal momento che non è possibile utilizzare la telefonia vorrei suggerire di provare questa, come si ottiene è l'ingresso agli utenti di quando l'installazione del dispositivo.

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

I tablet senza sim card non hanno un TelephonyManager, quindi non posso fare affidamento su questo. Ho aggiornato la mia domanda per includerla. Grazie – JohnRock

+0

Questa è un'idea interessante. Non ho provato, ma è spoofable? Non potevo contare su qualcosa che un utente potesse impostare ad hoc. – JohnRock

+0

Non sono sicuro, posso chiederti per cosa lo utilizzerai? –

Problemi correlati