【问题标题】:Xamarin Forms Connect to Wifi >= API Level 29Xamarin 表单连接到 Wifi >= API 级别 29
【发布时间】:2022-06-21 19:29:25
【问题描述】:

我尝试连接到特定的 Wifi,但每次我收到 System.NullReferenceException: 'Object reference not set to an instance of an object。 (在代码中注释)

这是我的方法

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;
        }

这是我的 NetworkCallback 类

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();
    }

编辑:

在 /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.Runtime/JNINativeWrapper.g 中的 Android.Runtime.JNINativeWrapper._unhandled_exception (System.Exception e) [0x0000e]。 CS:12 在 Android.Runtime.JNINativeWrapper.Wrap_JniMarshal_PPL_V (_JniMarshal_PPL_V 回调,System.IntPtr jnienv,System.IntPtr klazz,System.IntPtr p0) [0x0001d] 在 /Users/runner/work/1/s/xamarin-android/src/Mono。 Android/Android.Runtime/JNINativeWrapper.g.cs:111 在(包装器本机到托管)Android.Runtime.JNINativeWrapper.Wrap_JniMarshal_PPL_V(intptr,intptr,intptr)

【问题讨论】:

  • 如果您知道哪一行导致了异常,那么您需要确定该行上的哪个元素为空。我们不能为你这样做。使用调试器或检查堆栈跟踪以获取更多信息
  • 好问题大声笑我调试这个什么都不是空的
  • 显然是。查看堆栈跟踪以了解根本原因是什么
  • request = {NetworkRequest [ NONE id=0, [ 传输:WIFI 功能:NOT_RESTRICTED&TRUSTED&NOT_VPN 说明符: Uid: 10154 AdministratorUids: [] RequestorUid: -1 RequestorPackageName: null] ]} AND new NetworkCallback() = {crc64c1fb061c2ccb06a5.NetworkCallback@1671fdb}
  • 我的堆栈跟踪:在 Android.Runtime.JNINativeWrapper._unhandled_exception (System.Exception e) [0x0000e] 在 /Users/runner/work/1/s/xamarin-android/src/Mono.Android/ Android.Runtime/JNINativeWrapper.g.cs:12 在 Android.Runtime.JNINativeWrapper.Wrap_JniMarshal_PPL_V (_JniMarshal_PPL_V 回调,System.IntPtr jnienv,System.IntPtr klazz,System.IntPtr p0) [0x0001d] 在 /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)

标签: c# android xamarin.forms xamarin.android android-wifi


【解决方案1】:

确保添加任何必需的权限,我认为您需要将其添加到您的 AppManifest 以修复错误:

<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-21
    • 2020-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-06
    相关资源
    最近更新 更多