Android网络类型判断及IP地址获取
2018-01-02 19:29
344 查看
轉載自 http://blog.csdn.net/dodod2012/article/details/51305739
参考地址:http://blog.sina.com.cn/s/blog_5da93c8f0102vg21.html
http://www.cnblogs.com/android100/p/Android-get-ip.html
http://blog.csdn.net/xundh/article/details/44916177
用户权限:
判断有无网络连接:
判断WiFi是否已连接:
判断WiFi和移动流量是否已连接:
只判断移动网络连接是否正常:
一个工具类:
参考地址:http://blog.sina.com.cn/s/blog_5da93c8f0102vg21.html
http://www.cnblogs.com/android100/p/Android-get-ip.html
http://blog.csdn.net/xundh/article/details/44916177
用户权限:
<uses-permission android:name="android.permission.INTERNET"></uses-permission> <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> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
判断有无网络连接:
ConnectivityManager mConnectivity = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); TelephonyManager mTelephony = (TelephonyManager)this.getSystemService(TELEPHONY_SERVICE); //检查网络连接 NetworkInfo info = mConnectivity.getActiveNetworkInfo(); if (info == null || !mConnectivity.getBackgroundDataSetting()) { return false; }
判断WiFi是否已连接:
/** * make true current connect service is wifi * @param mContext * @return */ private static boolean isWifi(Context mContext) { ConnectivityManager connectivityManager = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo(); if (activeNetInfo != null && activeNetInfo.getType() == ConnectivityManager.TYPE_WIFI) { return true; } return false; }
判断WiFi和移动流量是否已连接:
public static boolean checkNetworkConnection(Context context) { final ConnectivityManager connMgr = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); final android.net.NetworkInfo wifi =connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI); final android.net.NetworkInfo mobile =connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); if(wifi.isAvailable()||mobile.isAvailable()) //getState()方法是查询是否连接了数据网络 return true; else return false; }
只判断移动网络连接是否正常:
ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo mMobileNetworkInfo = mConnectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); //获取移动网络信息 if (mMobileNetworkInfo != null) { return mMobileNetworkInfo.isAvailable(); //getState()方法是查询是否连接了数据网络 } } return false;
一个工具类:
import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.util.Enumeration; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.provider.Settings; import android.telephony.TelephonyManager; import android.util.Log; public class NetWorkUtils { // Context context; public static boolean isNetWorkAvaliable(Context context){ ConnectivityManager connect = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); if(connect == null){ return false; }else{ NetworkInfo[] info = connect.getAllNetworkInfo(); if(info != null){ f 11c0a or(int i=0;i<info.length;i++){ if(info[i].getState() == NetworkInfo.State.CONNECTED){ //网络可用 return true; } } } } return false; } public static void setNetwork(final Context context){ AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setIcon(android.R.drawable.ic_dialog_alert); builder.setTitle("当前无网络连接,是否进行设置?"); builder.setPositiveButton("设置", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub // Intent mintent = new Intent(); // ComponentName comp = new ComponentName("com.android.settings","com.android.settings.WirelessSettings"); // mintent.setComponent(comp); // mintent.setAction("android.intent.action.VIEW"); // startActivity(mintent); context.startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS)); } }); builder.setNegativeButton("下次再说", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub dialog.cancel(); } }); builder.create(); builder.show(); } public static String getIpAddress(Context context) { ConnectivityManager connect = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); //检查网络连接 NetworkInfo info = connect.getActiveNetworkInfo(); int netType = info.getType(); int netSubtype = info.getSubtype(); if (netType == ConnectivityManager.TYPE_WIFI) { //WIFI return getWifiIpAddress(context); } else if (netType == ConnectivityManager.TYPE_MOBILE ) { //MOBILE return getLocalIpAddress(); } else { return "127.0.0.1"; } } //使用wifi public static String getWifiIpAddress(Context context) { //获取wifi服务 WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); //判断wifi是否开启 // if (!wifiManager.isWifiEnabled()) { // <span style="white-space:pre"> </span> wifiManager.setWifiEnabled(true); // } WifiInfo wifiInfo = wifiManager.getConnectionInfo(); int ipAddress = wifiInfo.getIpAddress(); String ip = intToIp(ipAddress); return ip; } private static String intToIp(int i) { return (i & 0xFF ) + "." + ((i >> 8 ) & 0xFF) + "." + ((i >> 16 ) & 0xFF) + "." + ( i >> 24 & 0xFF) ; } //使用GPRS public static 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("Exception", ex.toString()); } return "127.0.0.1"; } }
相关文章推荐
- 【Android基础】Android网络类型判断及IP地址获取
- Android 判断网络是否可用、网络类型WIFI/2G/3G/4G及获取IP
- android 判断当前环境网络是否可用及获取当前网络类型
- Android判断网络连接状态,判断网络连接方式,获取IP地址
- NetworkInfo类,判断网络类型,获取WIFI名称,网速,网络信号,IP地址,MAC地址
- android 获取手机上面的IMSI序列号,IMEI,MAC地址,IP地址,当前时间,当前经纬度,获取网络类型
- Android-->分享工具类:判断网络状态,网络类型,获取网络IP(包括GSM IP)
- Android 判断网络是否可用、网络类型WIFI/2G/3G/4G及获取IP
- 一起学android之如何获取网络类型并判断是否可用(20)
- Android 源码 判断网络数据类型
- Android 获取当前系统的语言环境及网络连接类型(有源码)
- Android网络类型判断(2g、3g、wifi)
- Android机顶盒 获取当前连接网络的Ip地址
- Android网络类型判断(2g、3g、wifi)
- [Android实例] 判断网络是否连接,然后选择网络类型(比如wifi等)来连接网络
- Android网络类型判断
- android网络类型判断
- android判断网络的类型
- Android-判断是否有网络连接&&类型
- android获取屏幕尺寸、密度(判断手机屏幕类型)