有没有办法检查我当前连接的 wifi 是否与以前连接的 wifi 不同?
Is there a way to check if my current wifi connected is different from previous connected wifi?
我想在我从后台 return 到应用程序后检测我的 wifi 连接是否已更改(如果它已更改为蜂窝网络或某些其他 wifi 但不相同)。有什么办法吗?
我尝试了下面的代码,但它不起作用,每次我 return 到应用程序时它都会启动,即使同一个 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与旧的进行比较?
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
String ssid = wifiInfo.getSSID();
int networkid = wifiInfo.getNetworkId();
如果网络 ID 在您的设备上返回 O,请改用 SSID。
我想在我从后台 return 到应用程序后检测我的 wifi 连接是否已更改(如果它已更改为蜂窝网络或某些其他 wifi 但不相同)。有什么办法吗? 我尝试了下面的代码,但它不起作用,每次我 return 到应用程序时它都会启动,即使同一个 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与旧的进行比较?
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
String ssid = wifiInfo.getSSID();
int networkid = wifiInfo.getNetworkId();
如果网络 ID 在您的设备上返回 O,请改用 SSID。