Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在android中获得私有ip_Java_Android - Fatal编程技术网

Java 在android中获得私有ip

Java 在android中获得私有ip,java,android,Java,Android,我正在尝试获取连接的wifi的本地ip,这里是我使用的 final WifiManager manager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE); 但这不会强制转换到WifiManager。我在最新的android ide中看到一条红线,上面写着: Suspicious cast to WifiManager for a WIFI_SERVICE: expec

我正在尝试获取连接的wifi的本地ip,这里是我使用的

final WifiManager manager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
但这不会强制转换到
WifiManager
。我在最新的android ide中看到一条红线,上面写着:

Suspicious cast to WifiManager for a WIFI_SERVICE: expected WifiManager
因此我无法访问

final DhcpInfo dhcp = manager.getDhcpInfo();

我使用的是api 28,那么这有什么问题呢。我在谷歌上搜索到的所有解决方案都使用了我在这里显示的相同代码

解决方案更改导入源。

import android.net.NetworkInfo;


您可以获得如下所示的WifiConnectionManager:

WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
。。。您的IP地址为:

wifi.getDhcpInfo().ipAddress

希望有帮助。

获取IP地址的另一种方法是执行以下操作:

WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int ipNum = wifiInfo.getIpAddress();
String myIPAddress = Formatter.formatIpAddress(ipNum);
您为我的上述答案导入的内容应如下所示:

import android.net.wifi.WifiManager;
import android.net.wifi.WifiInfo;
import java.util.Formatter;
现在,
myIPAddress
包含WiFi网络的IP地址。您还应确保在
AndroidManifest.xml
中具有以下权限:

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

根据Android官方文档,您向我们展示的源代码片段是正确的

如果代码出现错误,我知道两种合理的解释:

  • 您可能导入了错误的
    WifiManager
    类。检查您是否导入了android.net.wifi.WifiManager,而不是其他版本

  • 这可能是Android IDE中的一个问题。如果重新启动/刷新IDE,查看错误是否消失


  • 错误消息

    Suspicious cast to WifiManager for a WIFI_SERVICE: expected WifiManager
    
    这意味着这个问题是由特定于Android的检查发现的,而不是(纯)Java编译错误。如果这是一个Java编译错误,那么cast将被描述为不正确的,而不是可疑的

    从Java的角度来看,这是从
    Java.lang.Object
    到一些
    WifiManager
    类的转换。这在编译时是合法的


    错误消息来自一些特定于Android的检查。它说“嘿,哇,这将在运行时产生一个类强制转换异常”。问题是:为什么会这样想?

    即兴说来,这似乎是一个IDE错误。确保您拥有
    WifiManager
    import
    。您可能导入了错误的
    WifiManager
    Suspicious cast to WifiManager for a WIFI_SERVICE: expected WifiManager