丘梓颖 发表于 2016-5-18 11:18:13

Android获取本机IP地址(不是localhost)和MAC的方法

这个方法在摩托罗拉里程碑上测试通过。功能是获取本机的IP和MAC地址。首先新建一个工程,修改AndroidManifest.xml文件增加用户权限,如下。

view plaincopy to clipboardprint?
<uses-permissionAndroid:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
然后修改/res/layout/main.xml,如下。


复制到剪贴板XML/HTML代码

[*]viewplaincopytoclipboardprint?
[*]<TextView
[*]android:id="@+id/hello"
[*]android:layout_width="fill_parent"
[*]android:layout_height="wrap_content"
[*]/>


主要代码如下(GetIPMAC.Java):


复制到剪贴板Java代码

[*]viewplaincopytoclipboardprint?
[*]packageexp.getipmac;
[*]importjava.net.InetAddress;
[*]importjava.net.NetworkInterface;
[*]importjava.net.SocketException;
[*]importjava.util.Enumeration;
[*]importandroid.app.Activity;
[*]importandroid.content.Context;
[*]importandroid.net.wifi.WifiInfo;
[*]importandroid.net.wifi.WifiManager;
[*]importandroid.os.Bundle;
[*]importandroid.util.Log;
[*]importandroid.widget.TextView;
[*]publicclassGetIPMACextendsActivity{
[*]publicstaticStringhostip;//本机IP
[*]publicstaticStringhostmac;//本机MAC
[*]
[*]/**Calledwhentheactivityisfirstcreated.*/
[*]@Override
[*]publicvoidonCreate(BundlesavedInstanceState){
[*]super.onCreate(savedInstanceState);
[*]setContentView(R.layout.main);
[*]TextViewtv=(TextView)findViewById(R.id.hello);
[*]
[*]hostip=getLocalIpAddress();//获取本机IP
[*]hostmac=getLocalMacAddress();//获取本机MAC
[*]/*显示本机IP和MAC*/
[*]tv.setText("HostIP:"+hostip+"\nHostMAC:"+hostmac);
[*]/*在调试信息中输出本机IP和MAC*/
[*]if(hostip!=null)Log.d("GetIPMAC",hostip);
[*]elseLog.d("GetIPMAC","null");
[*]Log.d("GetIPMAC",hostmac);
[*]}
[*]
[*]publicStringgetLocalIpAddress(){
[*]try{
[*]for(Enumeration<NetworkInterface>en=NetworkInterface
[*].getNetworkInterfaces();en.hasMoreElements();){
[*]NetworkInterfaceintf=en.nextElement();
[*]for(Enumeration<InetAddress>enumIpAddr=intf
[*].getInetAddresses();enumIpAddr.hasMoreElements();){
[*]InetAddressinetAddress=enumIpAddr.nextElement();
[*]if(!inetAddress.isLoopbackAddress()){
[*]returninetAddress.getHostAddress().toString();
[*]}
[*]}
[*]}
[*]}catch(SocketExceptionex){
[*]Log.e("WifiPreferenceIpAddress",ex.toString());
[*]}
[*]returnnull;
[*]}
[*]
[*]publicStringgetLocalMacAddress(){
[*]WifiManagerwifi=(WifiManager)getSystemService(Context.WIFI_SERVICE);
[*]WifiInfoinfo=wifi.getConnectionInfo();
[*]returninfo.getMacAddress();
[*]}
[*]}



运行效果:
页: [1]
查看完整版本: Android获取本机IP地址(不是localhost)和MAC的方法