using System; using System.Collections.Generic; using System.Linq; using System.Text; using Android.App; using Android.Content; using Android.OS; using Android.Runtime; using Android.Views; using Android.Widget; using Android.Net.Wifi; using System.Net; using Java.Net; using Android.Net; using Android; namespace Shared.Net { public class NetWiFi { /// /// 9.0ϵͳÒÔÉÏÐèÒª¼ÓȨÏÞ android.permission.ACCESS_FINE_LOCATION¡¢android.permission.ACCESS_COARSE_LOCATION¡¢android.permission.CHANGE_WIFI_STATE /// 8.1ϵͳÐèÒª¼ÓȨÏÞ android.permission.CHANGE_NETWORK_STATE android.permission.CHANGE_WIFI_STATE /// ËùÓÐϵͳ°æ±¾¶¼ÐèÒª¼Ó android.permission.ACCESS_NETWORK_STATE¡¢android.permission.ACCESS_WIFI_STATE /// /// public static void GetWIFISSID(Action action) { var ssid = "unknown id"; if ((int)Build.VERSION.SdkInt <= 26/*8.0*/ ) { var mWifiManager = (WifiManager)Shared.Application.Activity.ApplicationContext.GetSystemService(Android.Content.Context.WifiService); if (mWifiManager != null) { var info = mWifiManager.ConnectionInfo; if (info != null) { ssid=info.SSID.Replace("\"", ""); } } action?.Invoke(ssid); } //8.1 else if ((int)Build.VERSION.SdkInt == 27) { var connManager = (ConnectivityManager)Shared.Application.Activity.ApplicationContext.GetSystemService(Android.Content.Context.ConnectivityService); if (connManager != null) { var networkInfo = connManager.ActiveNetworkInfo; if (networkInfo.IsConnected) { if (networkInfo.ExtraInfo != null) { ssid = networkInfo.ExtraInfo.Replace("\"", ""); } } } action?.Invoke(ssid); } else /*(int)Build.VERSION.SdkInt >= 28 //9.0*/ { (Shared.Application.Activity as BaseActivity).SetPermission((b) => { if (b) { var mWifiManager = (WifiManager)Shared.Application.Activity.ApplicationContext.GetSystemService(Android.Content.Context.WifiService); if (mWifiManager != null) { var info = mWifiManager.ConnectionInfo; ssid = info.SSID.Replace("\"", ""); } } action?.Invoke(ssid); }, Manifest.Permission.AccessFineLocation); } } public string GetIPAddress() { string ipAddress = "127.0.0.1"; try { var wifimanage = (WifiManager)Application.Activity.BaseContext.GetSystemService(Context.WifiService);//»ñÈ¡WifiManager var wifiinfo = wifimanage.ConnectionInfo; if (wifiinfo.IpAddress == 0) { var networkInterfaces = NetworkInterface.NetworkInterfaces; while (networkInterfaces.HasMoreElements) { var ha = (networkInterfaces.NextElement() as NetworkInterface).InetAddresses; while (ha.HasMoreElements) { var t = (ha.NextElement() as InetAddress); if (!t.IsLoopbackAddress && t.GetType() == typeof(Inet4Address)) { return t.HostAddress; } } } } else { ipAddress = intToIp(wifiinfo.IpAddress); } }catch(Exception e){ } return ipAddress; //return MyJar.Common.GetIpAddress(Shared.Application.Activity); } string intToIp(int i) { return (i & 0xFF) + "." + ((i >> 8) & 0xFF) + "." + ((i >> 16) & 0xFF) + "." + ((i >> 24) & 0xFF); } /// /// µ±Ç°IPµØÖ· /// public System.Net.IPAddress IpAddress { get { return System.Net.IPAddress.Parse(GetIPAddress()); } } /// /// ¹ã²¥µØÖ· /// public System.Net.IPAddress BroadcastIpAddress { get { return System.Net.IPAddress.Parse(getBroadcastAddress()); } } string getBroadcastAddress() { //var networkInfo = ((ConnectivityManager)Android.App.Application.Context.GetSystemService(Context.ConnectivityService)).ActiveNetworkInfo; //if (networkInfo != null && networkInfo.IsConnected) //{ // if (networkInfo.Type == ConnectivityType.Wifi) // { // } //} var broadcastAddress = "0.0.0.0"; var eni = NetworkInterface.NetworkInterfaces; while (eni.HasMoreElements) { var networkCard = (NetworkInterface)eni.NextElement(); if(!(networkCard.Name=="wlan0"||networkCard.Name=="eth0")){ continue; } var ncAddrList = networkCard.InterfaceAddresses; foreach (var networkCardAddress in ncAddrList) { var address = networkCardAddress.Address; if (!address.IsLoopbackAddress) { if (address.HostAddress.IndexOf(":") > 0) { // case : ipv6 continue; } else { // case : ipv4 broadcastAddress = networkCardAddress.Broadcast.HostAddress; break; } } } } return broadcastAddress; } } }