2017-08-15 9 views
0

DhcpInfo.Netmaskでネットワークアドレスを取得しようとしていますが、デバイスがwifiネットワークに接続されていても、取得するネットマスクは0です。Xamarin.Android DhcpInfo.Netmask returns 0

namespace checks 
{ 
[Activity(Label = "checks", MainLauncher = true, Icon = "@drawable/icon")] 
public class MainActivity : Activity 
{ 
    protected override void OnCreate(Bundle bundle) 
    { 
     base.OnCreate(bundle); 
     SetContentView (Resource.Layout.Main); 

     Button dataButton = FindViewById<Button>(Resource.Id.connectionDataButton); 

     dataButton.Click += (object sender, EventArgs e) => 
     { 

      WifiManager wifiManager = (WifiManager)GetSystemService(Context.WifiService); 
      var d = wifiManager.DhcpInfo; 

      Console.WriteLine("My Net mask: {0}", d.Netmask); 



     }; 

    } 
} 

}

+0

。しかし、パーミッションを追加した後も、それはまだ0を返しています。 –

答えて

0

私はDhcpInfo.Netmaskと私のネットワークアドレスを取得しようとしているが、私が得るネットマスクは私のデバイスであっても、0である:これは私が使用しているコードです。 Wi-Fiネットワークに接続します。

これはKnown Issueです。

回避策として、あなたはthis tableでネットマスクにNetworkPrefixLengthを取得し、それを変換するには、次のコードを使用することができます。私はいなかった

WifiManager wifiManager = (WifiManager)GetSystemService(Context.WifiService); 
DhcpInfo dhcpInfo = wifiManager.DhcpInfo; 
try 
{ 
    byte[] ipAddress = BitConverter.GetBytes(dhcpInfo.IpAddress); 
    InetAddress inetAddress = InetAddress.GetByAddress(ipAddress); 
    NetworkInterface networkInterface = NetworkInterface.GetByInetAddress(inetAddress); 
    foreach (InterfaceAddress address in networkInterface.InterfaceAddresses) 
    { 
     //short netPrefix = address.getNetworkPrefixLength(); 
     //Log.d(TAG, address.toString()); 
     var prefix=address.NetworkPrefixLength; 
    } 
} 
catch (IOException exception) 
{ 
    Log.Debug("Exception:", exception.Message); 
}