Android开发(39) android获取ip地址

来源:互联网 发布:mac os 10.10下载 编辑:程序博客网 时间:2024/05/22 17:25
1.如果使用WIFI可以用android自带的类来获取IP首先设置用户权限<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.java方法:这时相当于是用的java的类来获取ip,其实这个不仅可以获得GPRS的,wifi的一样能够获取!   首先,设置用户上网权限     <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;        }   3.可以通过创建一个socket,通过socket来获取本地的IP地址。try{         Socket socket = new Socket("www.baidu.com", 80);         Log.i("", socket.getLocalAddress().toString());)}         catch(Exception e){                 Log.i("",e.getMessage());}    总之其实完全可以通过下面这个完整的文件来实现以上三个方法: import java.net.InetAddress;import java.net.NetworkInterface;import java.net.Socket;import java.util.Enumeration; import android.app.Activity;import android.net.wifi.WifiInfo;import android.net.wifi.WifiManager;import android.os.Bundle;import android.text.format.Formatter;import android.widget.EditText;import android.widget.TextView; public class IpAddressgetActivity extends Activity {       //private TextView mText;       @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        EditText et = (EditText)findViewById(R.id.edittext01);        String ip = null;               //Method 1        WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);        WifiInfo info = wifiManager.getConnectionInfo();        ip = "wifiInfo :" + Formatter.formatIpAddress(info.getIpAddress());        ip += "\n";               //Method 2        try{            Socket socket = new Socket("10.40.73.41", 80);            ip += "socket : " + socket.getLocalAddress().toString() + "\n";        } catch (Exception e) {            e.printStackTrace();            //throw new RuntimeException();        }               //Method 3        try {            Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();            NetworkInterface inf = interfaces.nextElement();            for (Enumeration<InetAddress> enumAddress = inf.getInetAddresses();enumAddress.hasMoreElements();) {                InetAddress in = enumAddress.nextElement();                if(!in.isLinkLocalAddress()) {                    ip += "NetworkInterface : " + in.getHostAddress() + "\n";                }            }        }catch (Exception e) {            e.printStackTrace(); 

0 0