這個方法在摩托羅拉裡程碑上測試通過。功能是擷取原生IP和MAC地址。首先建立一個工程,修改AndroidManifest.xml檔案增加使用者權限,如下。
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission><br /><uses-permission android:name="android.permission.INTERNET"></uses-permission>
然後修改/res/layout/main.xml,如下。
<TextView<br /> android:id ="@+id/hello"<br /> android:layout_width="fill_parent"<br /> android:layout_height="wrap_content"<br /> />
主要代碼如下(GetIPMAC.java):
package exp.getipmac;<br />import java.net.InetAddress;<br />import java.net.NetworkInterface;<br />import java.net.SocketException;<br />import java.util.Enumeration;<br />import android.app.Activity;<br />import android.content.Context;<br />import android.net.wifi.WifiInfo;<br />import android.net.wifi.WifiManager;<br />import android.os.Bundle;<br />import android.util.Log;<br />import android.widget.TextView;<br />public class GetIPMAC extends Activity {<br />public static String hostip; //本機IP<br />public static String hostmac; //本機MAC</p><p> /** Called when the activity is first created. */<br /> @Override<br /> public void onCreate(Bundle savedInstanceState) {<br /> super.onCreate(savedInstanceState);<br /> setContentView(R.layout.main);<br /> TextView tv= (TextView)findViewById(R.id.hello);</p><p> hostip = getLocalIpAddress(); //擷取本機IP<br /> hostmac = getLocalMacAddress();//擷取本機MAC<br /> /* 顯示本機IP和MAC */<br /> tv.setText("HostIP:" + hostip + "/nHostMAC:" + hostmac);<br /> /* 在調試資訊中輸出本機IP和MAC */<br /> if (hostip != null) Log.d("GetIPMAC", hostip);<br /> else Log.d("GetIPMAC", "null");<br /> Log.d("GetIPMAC", hostmac);<br /> }</p><p> public String getLocalIpAddress() {<br />try {<br />for (Enumeration<NetworkInterface> en = NetworkInterface<br />.getNetworkInterfaces(); en.hasMoreElements();) {<br />NetworkInterface intf = en.nextElement();<br />for (Enumeration<InetAddress> enumIpAddr = intf<br />.getInetAddresses(); enumIpAddr.hasMoreElements();) {<br />InetAddress inetAddress = enumIpAddr.nextElement();<br />if (!inetAddress.isLoopbackAddress()) {<br />return inetAddress.getHostAddress().toString();<br />}<br />}<br />}<br />} catch (SocketException ex) {<br />Log.e("WifiPreference IpAddress", ex.toString());<br />}<br />return null;<br />}</p><p> public String getLocalMacAddress() {<br />WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);<br />WifiInfo info = wifi.getConnectionInfo();<br />return info.getMacAddress();<br />}<br />}
運行效果: