安卓WIFI如何检测当具体WIFI连接可用 [英] Android WIFI How To Detect When Specific WIFI Connection is Available
问题描述
我需要检测时,我通过网络连接到一个特定的WIFI网络。
I need to detect when I have network connectivity to a SPECIFIC WIFI network.
例如:当你走进你的房子,你的手机拿起你的家庭WiFi网络,我想一个通知,上面写着你是不是在你家的网络,你想连接到您? 但我想这只有当我在我的具体的房子发生了。
For example: As soon as you walk into your house, and your phone picks up your home WiFi network, I would like a notification that says "You are not at your home network, would you like to connect to you Home?" But I would like that to only happen when I am at my specific house.
我应该听我应该做的测试,以确保它是我的具体的家庭网络,而不是其他的网络?
What should I listen for and what tests should I do to make sure it is my specific home network, and not another network?
推荐答案
您可以使用的BroadcastReceiver地发现,WIFI网络已经改变了:
You can use BroadcastReceiver to find out that wifi network has changed:
BroadcastReceiver broadcastReceiver = new WifiBroadcastReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION);
context.registerReceiver(broadcastReceiver, intentFilter);
该BroadcastReceiver的可能是这样的。 并检查特定MAC地址见checkConnectedToDesiredWifi()方法的波纹管。
The BroadcastReceiver may look like this. And to check for specific MAC address see the checkConnectedToDesiredWifi() method bellow.
public class WifiBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (WifiManager.SUPPLICANT_STATE_CHANGED_ACTION .equals(action)) {
SupplicantState state = intent.getParcelableExtra(WifiManager.EXTRA_NEW_STATE);
if (SupplicantState.isValidState(state)
&& state == SupplicantState.COMPLETED) {
boolean connected = checkConnectedToDesiredWifi();
}
}
}
/** Detect you are connected to a specific network. */
private boolean checkConnectedToDesiredWifi() {
boolean connected = false;
String desiredMacAddress = "router mac address";
WifiManager wifiManager =
(WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifi = wifiManager.getConnectionInfo();
if (wifi != null) {
// get current router Mac address
String bssid = wifi.getBSSID();
connected = desiredMacAddress.equals(bssid);
}
return connected;
}
}
这篇关于安卓WIFI如何检测当具体WIFI连接可用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!