android中获取IP的方法
2012-08-15 16:54
351 查看
这是看到了Android_Tutor的博客中的内容,就贴过来自己学习下了
还有种方法:
wifi的网络,得到一个int值,要再写个int转换ip的方法,就可以得到ip地址了:
来看个完整例子的:
修改GetIp.java文件,主要是声明一个ConnectivityManager对象和一个NetworkInfo对象,编写一个对话框函数,当用户没有打开网络就运行该程序时,该对话框会提示用户检查网络。
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(LOG_TAG, ex.toString()); } return null; }
还有种方法:
WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); int ipAddress = wifiInfo.getIpAddress();
wifi的网络,得到一个int值,要再写个int转换ip的方法,就可以得到ip地址了:
public static String longToIP(long longIp) { // linux long是低位在前,高位在后 StringBuffer sb = new StringBuffer(""); // 将高24位置0 sb.append(String.valueOf((longIp & 0x000000FF))); sb.append("."); // 将高16位置0,然后右移8位 sb.append(String.valueOf((longIp & 0x0000FFFF) >>> 8)); sb.append("."); // 将高8位置0,然后右移16位 sb.append(String.valueOf((longIp & 0x00FFFFFF) >>> 16)); sb.append("."); // 直接右移24位 sb.append(String.valueOf((longIp >>> 24))); return sb.toString(); }
来看个完整例子的:
新建工程GetIp,修改/res/layout/main.xml文件,在里面增加一个TextView文本,完整的main.xml文件如下:
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:orientation="vertical" 4 android:layout_width="fill_parent" 5 android:layout_height="fill_parent" 6 > 7 8 <TextView 9 android:id="@+id/nametextview" 10 android:layout_width="fill_parent" 11 android:layout_height="wrap_content" 12 android:text=" " 13 android:textSize="20px" 14 /> 15 16 <TextView 17 android:id="@+id/ipTextView" 18 android:layout_width="fill_parent" 19 android:layout_height="wrap_content" 20 android:text=" " 21 android:textSize="20px" 22 /> 23 24 </LinearLayout>
修改GetIp.java文件,主要是声明一个ConnectivityManager对象和一个NetworkInfo对象,编写一个对话框函数,当用户没有打开网络就运行该程序时,该对话框会提示用户检查网络。
1 package com.nan.getip; 2 3 import android.app.Activity; 4 import android.app.AlertDialog; 5 import android.content.DialogInterface; 6 import android.net.ConnectivityManager; 7 import android.net.NetworkInfo; 8 import android.os.Bundle; 9 import java.net.InetAddress; 10 import java.net.NetworkInterface; 11 import java.util.Enumeration; 12 import java.net.SocketException; 13 import android.util.Log; 14 import android.widget.TextView; 15 16 17 public class GetIp extends Activity 18 { 19 private TextView ipTextView = null; 20 private TextView nameTextView = null; 21 //定义一个ConnectivityManager对象 22 private ConnectivityManager mConnectivityManager = null; 23 //定义一个NetworkInfo对象 24 private NetworkInfo mActiveNetInfo = null; 25 26 /** Called when the activity is first created. */ 27 @Override 28 public void onCreate(Bundle savedInstanceState) 29 { 30 super.onCreate(savedInstanceState); 31 setContentView(R.layout.main); 32 33 nameTextView = (TextView)findViewById(R.id.nametextview); 34 ipTextView = (TextView)findViewById(R.id.ipTextView); 35 //实例化mConnectivityManager对象 36 mConnectivityManager = (ConnectivityManager)getSystemService(CONNECTIVITY_SERVICE);//获取系统的连接服务 37 //实例化mActiveNetInfo对象 38 mActiveNetInfo = mConnectivityManager.getActiveNetworkInfo();//获取网络连接的信息 39 if(mActiveNetInfo==null) 40 myDialog(); 41 else 42 setUpInfo(); 43 44 } 45 46 //获取本地IP函数 47 public String getLocalIPAddress() 48 { 49 try 50 { 51 for (Enumeration<NetworkInterface> mEnumeration = NetworkInterface.getNetworkInterfaces(); mEnumeration.hasMoreElements();) 52 { 53 NetworkInterface intf = mEnumeration.nextElement(); 54 for (Enumeration<InetAddress> enumIPAddr = intf.getInetAddresses(); enumIPAddr.hasMoreElements();) 55 { 56 InetAddress inetAddress = enumIPAddr.nextElement(); 57 //如果不是回环地址 58 if (!inetAddress.isLoopbackAddress()) 59 { 60 //直接返回本地IP地址 61 return inetAddress.getHostAddress().toString(); 62 } 63 } 64 } 65 } 66 catch (SocketException ex) 67 { 68 Log.e("Error", ex.toString()); 69 } 70 return null; 71 } 72 73 //显示IP信息 74 public void setUpInfo() 75 { 76 //如果是WIFI网络 77 if(mActiveNetInfo.getType()==ConnectivityManager.TYPE_WIFI) 78 { 79 nameTextView.setText("网络类型:WIFI"); 80 ipTextView.setText("IP地址:"+getLocalIPAddress()); 81 } 82 //如果是手机网络 83 else if(mActiveNetInfo.getType()==ConnectivityManager.TYPE_MOBILE) 84 { 85 nameTextView.setText("网络类型:手机"); 86 ipTextView.setText("IP地址:"+getLocalIPAddress()); 87 } 88 else 89 { 90 nameTextView.setText("网络类型:未知"); 91 ipTextView.setText("IP地址:"); 92 } 93 94 } 95 96 //显示对话框 97 private void myDialog() 98 { 99 AlertDialog mDialog = new AlertDialog.Builder(GetIp.this) 100 .setTitle("注意") 101 .setMessage("当前网络不可用,请检查网络!") 102 .setPositiveButton("确定", new DialogInterface.OnClickListener() 103 { 104 105 @Override 106 public void onClick(DialogInterface dialog, int which) 107 { 108 // TODO Auto-generated method stub 109 //关闭对话框 110 dialog.dismiss(); 111 //结束Activity 112 GetIp.this.finish(); 113 } 114 }) 115 .create();//创建这个对话框 116 mDialog.show();//显示这个对话框 117 } 118 119 }
最后,修改AndroidManifest.xml文件,在里面添加2个权限: <uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
相关文章推荐
- Android获取机器ID,Mac,IP等的方法
- Android高手进阶教程(十一)之----Android 通用获取Ip的方法(判断手机是否联网的方法)!
- Android 通用获取Ip的方法(判断手机是否联网的方法)!!!
- Android高手进阶教程(十一)之----Android 通用获取Ip的方法(判断手机是否联网的方法)!!!
- 获取android手机当前网络链接IP的方法
- android 获取 ip 地址方法
- android获取wifi外网ip的方法
- Android高手进阶教程(十一)之----Android 通用获取Ip的方法(判断手机是否联网的方法)!
- android获取wifi外网ip的方法
- Android 通用获取IP的方法
- Android 通用获取Ip的方法(判断手机是否联网的方法)!!!
- Android高手进阶教程(十一)之----Android 通用获取Ip的方法(判断手机是否联网的方法)!!!
- Android获取本机局域网IP的方法
- Android系统下获取本地IP和mac地址的方法
- Android正确获取外网ip的方法。
- Android通用获取ip方法
- Android高手进阶教程(十一)之----Android 通用获取Ip的方法(判断手机是否联网的方法)!!!
- 【转】Android获取IP的方法,并可以判断手机是否联网
- Android获取手机Ip的方法
- Android高手进阶教程(十一)之----Android 通用获取Ip的方法(判断手机是否联网的方法)!!!