I try to connect to a specific Wifi but everytime I get a System.NullReferenceException: 'Object reference not set to an instance of an object.' (commented in code)
Here is my method
public static Task ConnectToWifi(Wifi wifi)
{
var wifiSpecififier = new WifiNetworkSpecifier.Builder()
.SetSsid(wifi.SSID)
.SetWpa2Passphrase(wifi.Password)
.SetIsHiddenSsid(wifi.Hidden)
.Build();
var request = new Android.Net.NetworkRequest.Builder()
.AddTransportType(Android.Net.TransportType.Wifi)
.RemoveCapability(Android.Net.NetCapability.Internet)
.SetNetworkSpecifier(wifiSpecififier)
.Build();
var connectivityManager = Android.App.Application.Context.GetSystemService(
Android.App.Application.ConnectivityService) as Android.Net.ConnectivityManager;
connectivityManager.RequestNetwork(request, new NetworkCallback()); //nullex
return Task.CompletedTask;
}
Here is my NetworkCallback class
public class NetworkCallback : Android.Net.ConnectivityManager.NetworkCallback
{
public static Android.Content.Context context = Android.App.Application.Context;
Android.Net.ConnectivityManager connectivityManager = (Android.Net.ConnectivityManager)context.GetSystemService(Android.App.Application.ConnectivityService);
public override void OnAvailable(Android.Net.Network network)
{
base.OnAvailable(network);
connectivityManager.BindProcessToNetwork(network);
}
public override void OnUnavailable() => base.OnUnavailable();
}
Edit:
at Android.Runtime.JNINativeWrapper._unhandled_exception (System.Exception e) [0x0000e] in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.Runtime/JNINativeWrapper.g.cs:12 at Android.Runtime.JNINativeWrapper.Wrap_JniMarshal_PPL_V (_JniMarshal_PPL_V callback, System.IntPtr jnienv, System.IntPtr klazz, System.IntPtr p0) [0x0001d] in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.Runtime/JNINativeWrapper.g.cs:111 at (wrapper native-to-managed) Android.Runtime.JNINativeWrapper.Wrap_JniMarshal_PPL_V(intptr,intptr,intptr)
Make sure to add any required permissions, I think you need this to your AppManifest to fix the error:
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />