简体   繁体   English

如何解决 android 上出现“无虚拟方法”错误的问题

[英]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.

相关问题 如何解决这个问题android错误? (java.lang.NullPointerException: 尝试调用虚方法 &#39;android.content.res.XmlResourceParser) - how to solve this problem android error ?? (java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.XmlResourceParser) 如何修复 android 构建错误 - 无法创建 Java 虚拟机 - How to fix android build error - Could not create the Java Virtual Machine 如何解决此问题:尝试在空对象引用上调用虚拟方法&#39;android.text.Editable android.widget.EditText.getText()&#39; - How to fix this issues: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference 如何在 addFriends 方法中解决我的问题 - How to fix my problem at addFriends method 如何修复在 null object 参考上调用虚拟方法 'android.view.View androidx.fragment.app.FragmentActivity.findViewById(int)' 的尝试? - How to fix attempt to invoke virtual method 'android.view.View androidx.fragment.app.FragmentActivity.findViewById(int)' on a null object reference? 如何修复尝试在加载广告时调用虚拟方法 - How to fix Attempt to invoke virtual method while loading ads 如何解决“错误:包 android.support.v7.widget 不存在”的问题? - How to fix "error: package android.support.v7.widget does not exist" problem? 如何使用 Android 和 Firebase 修复此错误 - How to fix this error with Android and Firebase 如何修复Android中的内存不足错误? - How to fix outofmemory error in Android? 如何修复Eclipse Java虚拟机启动程序错误? - How to fix Eclipse Java Virtual Machine Launcher Error?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM