2017-01-13 5 views
2

J'ai commencé à travailler sur une application de surveillance réseau et je me demandais s'il y avait un moyen de trouver l'adresse IP attribuée par le FAI?Obtenir l'adresse IP du fournisseur de services Internet Android

J'ai examiné les API Inet et WifiManager et tout ce qu'ils semblent vous donner est l'adresse IP de votre réseau local. Le code que j'ai essayé ci-dessous, me donne juste mon adresse locale.

WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE); 
String ip = Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress()); 
TextView ipaddr = (TextView)findViewById(R.id.address); 
ipaddr.setText("Your IP Address is: " + ip); 

Répondre

1

Essayez ceci:

try { 
     URL ip = new URL("http://checkip.amazonaws.com/"); 
     BufferedReader in = new BufferedReader(new InputStreamReader(ip.openStream())); 

     System.out.println(in.readLine()); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
+0

AsyncTask nécessaire –

+0

Bien sûr. Mon code montre seulement comment obtenir l'adresse IP. Et il devrait être utilisé correctement dans Android – Uata

+0

Merci @Uata cela fonctionne très bien, il a fallu un peu de bidouille avec l'ASyncTask pour le faire fonctionner mais vous avez bien fait de ne pas ajouter ce code là-bas. Ça m'arrête d'être paresseux – Crouch

3

Vous effectuez un appel HTTP à un service qui vous indique votre adresse IP externe. Un exemple d'un tel service est ipify.

https://api.ipify.org/

Documentation: https://www.ipify.org

Extrait:

try (java.util.Scanner s = new java.util.Scanner(new java.net.URL("https://api.ipify.org").openStream(), "UTF-8").useDelimiter("\\A")) { 
    System.out.println("My current IP address is " + s.next()); 
} catch (java.io.IOException e) { 
    e.printStackTrace(); 
} 
+0

Pourquoi downvote? – Dev

+0

Bien que cela puisse théoriquement répondre à la question, [il serait préférable] (// meta.stackoverflow.com/q/8259) d'inclure les parties essentielles de la réponse ici, et de fournir le lien pour référence. –