Java 在android中获得私有ip
我正在尝试获取连接的wifi的本地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
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,而不是其他版本错误消息
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