from http://www.2cto.com/kf/201108/99623.html
1.使用WIFI
首先設置用戶權限
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>
其次,代碼如下
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//獲取wifi服務
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
//判斷wifi是否開啓
if (!wifiManager.isWifiEnabled()) {
wifiManager.setWifiEnabled(true);
}
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int ipAddress = wifiInfo.getIpAddress();
String ip = intToIp(ipAddress);
EditText et = (EditText)findViewById(R.id.EditText01);
et.setText(ip);
}
private String intToIp(int i) {
return (i & 0xFF ) + "." +
((i >> 8 ) & 0xFF) + "." +
((i >> 16 ) & 0xFF) + "." +
( i >> 24 & 0xFF) ;
}
2.使用GPRS
首先,設置用戶上網權限
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
其次,代碼如下
public String getLocalIpAddress()
{
try
{
for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();)
{
NetworkInterface intf = en.nextElement();
for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();)
{
InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress())
{
return inetAddress.getHostAddress().toString();
}
}
}
}
catch (SocketException ex)
{
Log.e("WifiPreference IpAddress", ex.toString());
}
return null;
}
public String GetIpAddress() {
Enumeration<NetworkInterface> netInterfaces = null;
try {
netInterfaces = NetworkInterface.getNetworkInterfaces();
while (netInterfaces.hasMoreElements()) {
NetworkInterface ni = netInterfaces.nextElement();
System.out.println("DisplayName:" + ni.getDisplayName());
System.out.println("Name:" + ni.getName());
Enumeration<InetAddress> ips = ni.getInetAddresses();
while (ips.hasMoreElements()) {
InetAddress ip = ips.nextElement();
if (!ip.isLoopbackAddress()) {
return ip.getHostAddress();
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
在android系統的pad中是不需要區分是網線連接和無論是通過apache方式連接如:
HttpClient httpClient = new DefaultHttpClient(); // 自動獲取網絡
if(NetworkHelpers.queryPreferedNetworkType(context) != ConnectivityManager.TYPE_WIFI) {
APN apn = NetworkHelpers.queryPreferedApn(context);
String proxyStr = apn.getProxy();
if(!TextUtils.isEmpty(proxyStr) && !TextUtils.isEmpty(apn.getPort()) && apn.getPort().matches("[0-9]*")) {
HttpHost proxy = new HttpHost(apn.getProxy(),
Integer.parseInt(apn.getPort()));
httpClient.getParams().setParameter(
ConnRoutePNames.DEFAULT_PROXY, proxy);
}
}
HttpConnectionParams.setConnectionTimeout(httpClient.getParams(), TIME_OUT);
try {
HttpUriRequest request = null;
if (postValues == null) {
HttpGet getter = new HttpGet(urlStr);
request = getter;
} else {
HttpPost poster = new HttpPost(urlStr);
poster.setEntity(new UrlEncodedFormEntity(postValues, ENCODE_UTF_8));
request = poster;
}
HttpResponse response = httpClient.execute(request);
HttpEntity entity = null;
if (response != null) {
entity = response.getEntity();
}
if (entity != null) {
in = entity.getContent();
}
android 方式連接如:
URL url = new URL(info.mUrl);
connection = (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(TIME_OUT);
都能自動區分網絡類型通過測試應該會優先選擇無線網絡,如果沒有無線網絡會選擇有線