android - 有没有办法检查我当前连接的 wifi 是否与以前连接的 wifi 不同?
问题描述
在我从后台返回应用程序后,我想检测我的 wifi 连接是否已更改(如果它已更改为蜂窝网络或其他一些 wifi 但不一样)。有没有办法做到这一点?我尝试了下面的代码,但它不起作用,即使相同的 wifi 保持连接,每次我返回应用程序时它都会继续启动。
IntentFilter networkIntent = new IntentFilter();
networkIntent.addAction("android.net.conn.CONNECTIVITY_CHANGE");
networkIntent.addAction(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION);
registerReceiver(wifichangereceiver, networkIntent);
下面是我的接收器:
public final BroadcastReceiver wifichangereceiver = new BroadcastReceiver() {
@Override
public void onReceive(final Context context, final Intent intent) {
final ConnectivityManager connMgr = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
final android.net.NetworkInfo wifi = connMgr
.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (wifi.isConnected()) {
hasWifiChanged = true;
} else {
hasWifiChanged = false;
}
}
解决方案
为什么不在一个变量中注册 wifi ID,然后当您连接到 WiFi 时,您可以将新的 wifi ID 与旧的 wifi ID 进行比较?
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
String ssid = wifiInfo.getSSID();
int networkid = wifiInfo.getNetworkId();
如果 networkid 在您的设备上返回 O,请改用 SSID。
推荐阅读
- java - 在纯 java 和 Android 之间共享模型类
- php - Magento 1请求参数在控制器中获取空数组
- python - 如何添加/附加到python对象?
- solace - 安慰 CLIENT_CLIENT_DISCONNECT_MQTT 的原因
- vba - 我的 VBA 代码每次运行时都会导致 Excel 崩溃
- bash - 是否可以在变量中获取 grep 路径输出?
- excel - Excel 根据另一张工作表中的另一列更新列
- javascript - 有没有办法在不创建 Web 应用程序的情况下添加到主屏幕的链接?
- python - 为什么不需要实例化烧瓶会话对象?
- javascript - Google Script won't call CSS file