private void getWifiIP() { //获取WIFI管理服务 WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); //判断WIFI是否开启,如果没有开启就自动开启 if (!wifiManager.isWifiEnabled()) { // 开启WIFI,需要设置用户权限:android.permission.CHANGE_WIFI_STATE wifiManager.setWifiEnabled(true); Toast.makeText(MainActivity.this, "正在开启WIFI,请稍后重新获取IP地址。", Toast.LENGTH_SHORT).show(); } //获取WIFI信息,需要设置用户权限:android.permission.ACCESS_WIFI_STATE WifiInfo wifiInfo = wifiManager.getConnectionInfo(); //获得整型的IP地址 int iIP = wifiInfo.getIpAddress(); //将整型的IP地址转换为字符串类型的IP地址 String sIP = intToIP(iIP); //显示IP地址 m_tvIP.setText(sIP); }
//将得到的int类型的IP转换为String类型 private String intToIP(int i) { return ( (i >> 0) & 0xFF ) + "." + ( (i >> 8) & 0xFF ) + "." + ( (i >> 16) & 0xFF ) + "." + ( (i >> 24) & 0xFF ) ; }
private void getIP() { //获取系统的连接服务 ConnectivityManager connectivityManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); //获取网络连接信息,需要设置用户权限:android.permission.ACCESS_NETWORK_STATE NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); //判断网络是否连接,如果没有连接就跳到设置页面进行网络设置 if (networkInfo != null && networkInfo.isConnected()) { if (networkInfo.getType() == ConnectivityManager.TYPE_MOBILE) { //mobile网络连接模式,即GPRS网络 try { //获取网络接口信息,需要设置用户权限:android.permission.INTERNET //枚举网络接口信息,即网卡信息连接信息 for (Enumeration<NetworkInterface>en=NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { NetworkInterface networkInterface = en.nextElement(); //枚举IP地址,如IPv4、IPv6的IP地址 for (Enumeration<InetAddress>enAddr=networkInterface.getInetAddresses(); enAddr.hasMoreElements();) { InetAddress inetAddress = enAddr.nextElement(); //判断地址类型:不是本地回环地址127.0.0.1,是IPv4的地址类型 if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address) { //显示IP地址 m_tvIP.setText(inetAddress.getHostAddress()); } } } } catch (SocketException e) { e.printStackTrace(); } } else if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) { //wifi网络连接模式 //获取WIFI管理服务 WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); //获取WIFI信息,需要设置用户权限:android.permission.ACCESS_WIFI_STATE WifiInfo wifiInfo = wifiManager.getConnectionInfo(); //获取WIFI模式下的IP地址并显示 int iIP = wifiInfo.getIpAddress(); String sIP = intToIP(iIP); m_tvIP.setText(sIP); } else { m_tvIP.setText("网络类型:" + networkInfo.getTypeName()); } } else { Toast.makeText(MainActivity.this, "当前无网络连接,请在设置中打开网络。", Toast.LENGTH_SHORT).show(); setNetwork(MainActivity.this); //弹出对话框提示是否进行网络设置 } }
//弹出对话框,是否打开设置界面进行网络设置 private void setNetwork(final Context context){ //提示对话框 AlertDialog.Builder builder=new AlertDialog.Builder(context); builder.setTitle("网络设置提示").setMessage("网络连接不可用,是否进行设置?") .setPositiveButton("设置", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Intent intent = new Intent(android.provider.Settings.ACTION_SETTINGS); context.startActivity(intent);//跳转到设置页面 } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }) .show(); }
以上操作需要在AndroidMainfest.xml文件中添加以下用户权限:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" />