首页 > 解决方案 > 在android中获取私有IP

问题描述

我试图在这里获取连接的 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,所以这有什么问题。我搜索了所有我发现的解决方案都使用了我在这里显示的相同代码。

标签: javaandroid

解决方案


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

如果代码给出错误,我知道两种可能的解释:

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

  2. 这可能是您的 Android IDE 中的问题。如果您重新启动/刷新 IDE,请查看错误是否消失。


错误信息

Suspicious cast to WifiManager for a WIFI_SERVICE: expected WifiManager

意味着此问题已被 Android 特定检查而不是(纯)Java 编译错误所发现。如果这是一个 Java 编译错误,则该转换将被描述为不正确,不可疑。

从 Java 的角度来看,这是java.lang.Object对某个WifiManager类的强制转换。这在编译时是合法的。

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


推荐阅读