ClassNotFoundException "android. net .wifi.WifiNetworkSpecifier $ Builder" - PullRequest
0 голосов
/ 19 апреля 2020

Я работаю над плагином флаттера, который подключается к указанному c Wi-Fi. Поскольку мой targetSdkVersion равен 29, а класс WifiConfiguuration устарел, и я даже не могу использовать несколько методов класса WifiManager, поэтому я должен использовать WifiNetworkSpecifier. Теперь проблема в том, что приложение работает нормально на Android 10 (проверено на Realme RMX1851, Redmi Note 8 Pro), но оно не работает на Android 6.0 (Vivo v5). Я получаю ClassNotFoundException, а затем приложение вылетает, вот мой код: -

 void connect() {
    if (!wifiManager.isWifiEnabled()) {
        result.error("WIFI_TURNED_OFF", "Wifi Adapter is Offline", "Please Turn on the wifi adapter");
        return;
    }

    WifiNetworkSpecifier.Builder builder = new WifiNetworkSpecifier.Builder()
            .setSsidPattern(new PatternMatcher(ssid, PatternMatcher.PATTERN_PREFIX))
            .setWpa2Passphrase(password);
    WifiNetworkSpecifier wifiNetworkSpecifier = builder.build();

    NetworkRequest.Builder networkRequestBuilder = new NetworkRequest.Builder()
            .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
            .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED)
            .addCapability(NetworkCapabilities.NET_CAPABILITY_TRUSTED)
            .setNetworkSpecifier(wifiNetworkSpecifier.toString());
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        networkRequestBuilder.setNetworkSpecifier(wifiNetworkSpecifier);
    }

    NetworkRequest networkRequest = networkRequestBuilder.build();
    ConnectivityManager cm = (ConnectivityManager) context.getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
    if (cm != null) {
        cm.requestNetwork(networkRequest, new ConnectivityManager.NetworkCallback() {
            @Override
            public void onAvailable(@NonNull Network network) {
                Log.e("WIFIDelegate", "available");
                super.onAvailable(network);
            }

            @Override
            public void onUnavailable() {
                Log.e("WIFIDelegate", "Not available");
                super.onUnavailable();
            }
        });
       } else {

        result.error("Connectivity_Manager_Not_Available", "Connectivity Manager is not available", "Connectivity Manager is not available");
    }

И ошибка

[ERROR:flutter/shell/platform/android/platform_view_android_jni.cc(39)] java.lang.NoClassDefFoundError: Failed resolution of: Landroid/net/wifi/WifiNetworkSpecifier$Builder;
E/flutter (18197):  at com.akaalapps.wifi_connect.WifiDelegate.connect(WifiDelegate.java:47)
E/flutter (18197):  at com.akaalapps.wifi_connect.WifiConnectPlugin.connectToWifi(WifiConnectPlugin.java:177)
E/flutter (18197):  at com.akaalapps.wifi_connect.WifiConnectPlugin.onMethodCall(WifiConnectPlugin.java:78)
E/flutter (18197):  at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:231)
E/flutter (18197):  at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:93)
E/flutter (18197):  at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:642)
E/flutter (18197):  at android.os.MessageQueue.nativePollOnce(Native Method)
E/flutter (18197):  at android.os.MessageQueue.next(MessageQueue.java:328)
E/flutter (18197):  at android.os.Looper.loop(Looper.java:164)
E/flutter (18197):  at android.app.ActivityThread.main(ActivityThread.java:5790)
E/flutter (18197):  at java.lang.reflect.Method.invoke(Native Method)
E/flutter (18197):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1015)
E/flutter (18197):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:876)
E/flutter (18197): Caused by: java.lang.ClassNotFoundException: Didn't find class "android.net.wifi.WifiNetworkSpecifier$Builder" on path: DexPathList[[zip file "/data/app/com.akaalapps.wifi_connect_example-1/base.apk"],nativeLibraryDirectories=[/data/app/com.akaalapps.wifi_connect_example-1/lib/arm64, /data/app/com.akaalapps.wifi_connect_example-1/base.apk!/lib/arm64-v8a, /vendor/lib64, /system/lib64]]
E/flutter (18197):  at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
E/flutter (18197):  at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
E/flutter (18197):  at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
E/flutter (18197):  ... 13 more
E/flutter (18197):  Suppressed: java.lang.ClassNotFoundException: android.net.wifi.WifiNetworkSpecifier$Builder
E/flutter (18197):      at java.lang.Class.classForName(Native Method)
E/flutter (18197):      at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
E/flutter (18197):      at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
E/flutter (18197):      at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
E/flutter (18197):      ... 14 more
E/flutter (18197):  Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available
E/flutter (18197): 
F/flutter (18197): [FATAL:flutter/shell/platform/android/platform_view_android_jni.cc(76)] Check failed: CheckException(env). 
F/libc    (18197): Fatal signal 6 (SIGABRT), code -6 in tid 18197 (connect_example)
Lost connection to device.```
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...