当手机设备在3G网络上连接时,如何确定如何确定Android设备的IP地址是否公开?
public static InetAddress getLocalIpAddress() {
try {
for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
NetworkInterface intf = en.nextElement();
for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
InetAddress address = enumIpAddr.nextElement();
return address;
}
}
} catch (SocketException ex) {
Log.e(DEBUG_TAG, ex.toString());
}
return null;
}
答案 0 :(得分:0)
写一个像这样的快速小网页:
<?php echo $_SERVER["REMOTE_ADDR"]; ?>
然后使用异步任务获取它:
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import android.os.AsyncTask;
public class NetreadTask extends AsyncTask<String, Void, String> {
protected String doInBackground(String... urls) {
return netread(urls[0]);
}
public final String netread(String url) {
try {
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);
ResponseHandler<String> resHandler = new BasicResponseHandler();
String page;
page = httpClient.execute(httpGet, resHandler);
return page;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
}
}
称之为:
String publicip = new NetreadTask().exec([yourpage]).get();
然后比较两者。通过上述方法获得的ip可以保证为您提供公共IP地址。
我知道这是一个老问题,但我希望它对某人有帮助!