【Android基础】Android网络类型判断及IP地址获取

参考地址: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){
				for(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";
	}

}




  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值