【Android基础】Android网络类型判断及IP地址获取
来源:互联网 发布:像钉钉一样的软件 编辑:程序博客网 时间:2024/05/20 18:54
参考地址: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() {@Overridepublic 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() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stubdialog.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) { //WIFIreturn getWifiIpAddress(context);} else if (netType == ConnectivityManager.TYPE_MOBILE ) { //MOBILEreturn getLocalIpAddress();} else { return "127.0.0.1"; }}//使用wifipublic 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) ;}//使用GPRSpublic 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 0
- 【Android基础】Android网络类型判断及IP地址获取
- android 获取网络IP地址
- Android-->分享工具类:判断网络状态,网络类型,获取网络IP(包括GSM IP)
- Android 判断网络是否可用、网络类型WIFI/2G/3G/4G及获取IP
- Android 判断网络是否可用、网络类型WIFI/2G/3G/4G及获取IP
- Android判断网络连接状态,判断网络连接方式,获取IP地址
- android设备获取当前所用网络类型和获取手机ip地址
- NetworkInfo类,判断网络类型,获取WIFI名称,网速,网络信号,IP地址,MAC地址
- android 获取手机上面的IMSI序列号,IMEI,MAC地址,IP地址,当前时间,当前经纬度,获取网络类型
- android 获取IP地址
- ANDROID 获取IP地址
- android 获取ip地址
- android获取IP地址
- android 获取IP地址
- android 获取IP地址
- Android 获取IP地址
- Android 获取IP地址
- Android获取ip地址
- java c++ 程序员 技术面试常用问题
- eclipse如何复制大量的get方法
- 从此不求人:自主研发一套PHP前端开发框架(29)
- 对象数组的初始化
- sklearn数据预处理
- 【Android基础】Android网络类型判断及IP地址获取
- 船舶运动控制研究的基本问题
- 练习三 1024
- 打飞机代码学习感想
- [caffe]深度学习之CNN检测object detection方法摘要介绍
- 解决idea 控制台中文乱码(监控系统出现乱码 201605-03)
- overload和override的区别
- eclipse_32位的Eclipse无法和64位的jdk搭配使用
- single number III