#java #android
#java #Android
Вопрос:
Я имею дело с этой проблемой:
Fatal Exception: java.lang.NoSuchMethodError
No virtual method getActiveNetwork()Landroid/net/Network; in class Landroid/net/ConnectivityManager; or its super classes (declaration of 'android.net.ConnectivityManager' appears in /system/framework/framework.jar:classes2.dex)
Вот мой код:
public boolean isNetworkAvailable() {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivityManager != null) {
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(connectivityManager.getActiveNetwork());
if (capabilities != null) {
if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
return true;
} else if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {
return true;
} else if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET)) {
return true;
}
}
}
}
return false;}
существует трассировка стека:
Fatal Exception: java.lang.NoSuchMethodError: No virtual method getActiveNetwork()Landroid/net/Network; in class Landroid/net/ConnectivityManager; or its super classes (declaration of 'android.net.ConnectivityManager' appears in /system/framework/framework.jar:classes2.dex)
at com.olgazelenko.esofer.MainMenu.isNetworkAvailable(MainMenu.java:307)
at com.olgazelenko.esofer.MainMenu.onCreate(MainMenu.java:75)
at android.app.Activity.performCreate(Activity.java:6178)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2648)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2769)
at android.app.ActivityThread.access$900(ActivityThread.java:177)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1430)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5910)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200)
кто-нибудь знает, как это можно исправить?
Комментарии:
1. Пожалуйста, добавьте полную трассировку стека.
2. проверьте это: justpaste.it/5q7ja
3. Пожалуйста, укажите это в своем вопросе, а не на каком-либо веб-сайте.
4. Также это не полная трассировка стека.
5. хорошо, проверьте это сейчас
Ответ №1:
Эта ошибка часто возникает, когда вы скомпилировали с одной версией вашей зависимости, но запускаете код с другой версией.
Здесь, похоже, com.olgazelenko.esofer.MainMenu.isNetworkAvailable(MainMenu.java:307)
вызывает метод из Android, который не найден во время вашего выполнения.
Этот метод, getActiveNetwork, похоже, был добавлен в Android SDK API уровня 23. Возможно, вы попытаетесь использовать его в более старой версии. см . https://developer.android.com/reference/android/net/ConnectivityManager#getActiveNetwork (). Попробуйте обновить minSdkVersion: https://developer.android.com/guide/topics/manifest/uses-sdk-element
Комментарии:
1. итак, в основном я должен обновить свою minSkVersion до 23? сейчас я на 22.
2. Точно developer.android.com/guide/topics/manifest/uses-sdk-element
3. хорошо, понял .. надеюсь, это сработает после того, как я обновлю свое опубликованное приложение … спасибо, приятель, ответ принят!