[英]How to fix the problem with error "No virtual method" on android
I am writing an application in android studio for android Pie.我正在 android 工作室为 android Pie 编写应用程序。 I want to get wifi info.
我想获取 wifi 信息。
@RequiresApi(api = Build.VERSION_CODES.S)
public String getData() {
String wifiDataTest;
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int frequency = wifiInfo.getFrequency();
int ipAddress = wifiInfo.getIpAddress();
int speed = wifiInfo.getLinkSpeed();
String ssid = wifiInfo.getSSID();
int wifiStandard = wifiInfo.getWifiStandard();
wifiDataTest = "Frequency [MHz]: " + frequency + "\nIP address: " + ipAddress
+ "\nSpeed [Mbps]: " + speed + "\nSSID: " + ssid + "\nWifi standard: " + wifiStandard;
return "WIFI\n" + wifiDataTest;
}
With int wifiStandard = wifiInfo.getWifiStandard ();
用
int wifiStandard = wifiInfo.getWifiStandard ();
shows me the error:向我显示错误:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.sensors, PID: 11040
java.lang.NoSuchMethodError: No virtual method getWifiStandard()I in class Landroid/net/wifi/WifiInfo; or its super classes (declaration of 'android.net.wifi.WifiInfo' appears in /system/framework/framework.jar)
I have not found information about such an error anywhere.我在任何地方都没有找到有关此类错误的信息。 Everything before
getWifiStandard ();
getWifiStandard ();
之前的所有内容worked fine.工作正常。
You're trying to run your app which contains the getWifiStandard()
method that exists ONLY on Android 11 or up.您正在尝试运行包含
getWifiStandard()
方法的应用程序,该方法仅存在于 Android 11 或更高版本上。
Try this:尝试这个:
public String getData() {
String wifiDataTest;
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int frequency = wifiInfo.getFrequency();
int ipAddress = wifiInfo.getIpAddress();
int speed = wifiInfo.getLinkSpeed();
String ssid = wifiInfo.getSSID();
String wifiStandard = "";
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.R) {
wifiDataTest = "Frequency [MHz]: " + frequency + "\nIP address: " + ipAddress
+ "\nSpeed [Mbps]: " + speed + "\nSSID: " + ssid + "\nWifi standard: " + wifiInfo.getWifiStandard();
} else {
if (wifiInfo.getLinkSpeed() <= 11) wifiStandard = "802.b";
else if (wifiInfo.getLinkSpeed() <= 54) wifiStandard = "802.g";
else if (wifiInfo.getLinkSpeed() <= 300) wifiStandard = "802.11n";
else if (wifiInfo.getLinkSpeed() <= 866.5) wifiStandard = "802.11ac";
wifiDataTest = "Frequency [MHz]: " + frequency + "\nIP address: " + ipAddress
+ "\nSpeed [Mbps]: " + speed + "\nSSID: " + ssid + "\nWifi standard: " + wifiStandard;
}
return "WIFI\n" + wifiDataTest;
}
Situtation 1: It's maybe you just reference to the function, missing ()情况1:可能你只是参考了function,缺少()
wrong example:错误的例子:
fun main(callback: () -> Unit) = callback fun main(callback: () -> Unit) = 回调
correct example:正确的例子:
fun main(callback: () -> Unit) = callback()有趣的主(回调:()->单元)=回调()
Situtation 2: the function is a Job, needed to be an Unit情况 2:function 是 Job,需要是 Unit
wrong example:错误的例子:
fun main(callback: () -> Unit) = MainScope().launch { callback() } fun main(callback: () -> Unit) = MainScope().launch { callback() }
correct example:正确的例子:
fun main(callback: () -> Unit) { MainScope().launch { callback() } } fun main(callback: () -> Unit) { MainScope().launch { callback() } }
Situtation 3: just Google & God know;))情况3:只有谷歌和上帝知道;))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.