public void getIpAddress() {
new AsyncTask<Context, Void, String>() {
@Override
protected void onPreExecute() {
// show your progress dialog
}
@Override
protected String doInBackground(Context... contexts) {
Context context = contexts[0];
String ipAddr;
try {
while(true) {
ipAddr = wifiIpAddress(context);
if (ipAddr != null) {
break;
}
Thread.sleep(1000);
}
} catch (InterruptedException e) {
e.printStackTrace();
return null;
}
return ipAddr;
}
protected String wifiIpAddress(Context context) {
WifiManager wifiManager = (WifiManager) context.getSystemService(WIFI_SERVICE);
int ipAddress = wifiManager.getConnectionInfo().getIpAddress();
// Convert little-endian to big-endianif needed
if (ByteOrder.nativeOrder().equals(ByteOrder.LITTLE_ENDIAN)) {
ipAddress = Integer.reverseBytes(ipAddress);
}
byte[] ipByteArray = BigInteger.valueOf(ipAddress).toByteArray();
String ipAddressString;
try {
ipAddressString = InetAddress.getByAddress(ipByteArray).getHostAddress();
} catch (UnknownHostException ex) {
Log.e("WIFIIP", "Unable to get host address.");
ipAddressString = null;
}
return ipAddressString;
}
@Override
protected void onPostExecute(String result) {
if (result != null) {
// hide your progress dialog
// yourTextView.setText(result);
} else {
// hide your progress dialog and show error dialog
}
}
}.execute(this);
}