我需要检测何时与特定WIFI网络建立网络连接.
例如:一旦你走进你的房子,你的手机拿起你的家庭WiFi网络,我想要一条通知说"你不在你的家庭网络,你想连接到你家吗?" 但我希望这只会发生在我特定的房子里.
我应该注意什么,我应该做些什么测试来确保它是我的特定家庭网络,而不是另一个网络?
pet*_*syn 28
您可以使用BroadcastReceiver找出wifi网络已更改:
BroadcastReceiver broadcastReceiver = new WifiBroadcastReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION);
context.registerReceiver(broadcastReceiver, intentFilter);
Run Code Online (Sandbox Code Playgroud)
BroadcastReceiver可能看起来像这样.要检查特定的MAC地址,请参阅下面的checkConnectedToDesiredWifi()方法.
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;
}
}
Run Code Online (Sandbox Code Playgroud)
Mar*_*era 12
长期以来,因为我们不像你需要的代码,对于免费服务,我只能推荐你,在创建这样的应用程序时,阅读有关Android及其网络/ Wifi可能性的一切可能性.
http://developer.android.com/reference/android/net/wifi/package-summary.html
如何在android中连接wifi
如何在我当前的android系统中获取我的wifi热点ssid
如何获取wifi的名称 - 使用android API的android网络?
在Android上获取Wifi接口名称
AndroidManifest.xml
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
Run Code Online (Sandbox Code Playgroud)
(最后一个,只有当你想让它检测你的位置时,才能防止不必要的通话)
AndroidManifest.xml
<uses-feature android:name="android.hardware.wifi" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38825 次 |
| 最近记录: |