繁体   English   中英

用户Wifi从一个网络更改为另一个网络时如何获得通知

[英]How to get notified when the users Wifi changes from one network to other

我有一个需要检测用户Wifi连接的应用程序,基于此,用户可以看到一些数据。 关键是我想在启动应用程序时在用户位于其他网络上时收到通知,而在应用程序运行时移至其他网络上。 让我提出一个方案:

假设我有2个wifi,一个在我的屋子里,另一个在外面。 启动该应用程序时,我在屋子里,因此显示给我的数据是“ ABC”。 现在,当我搬出房屋时,我的应用程序应该发出通知并终止活动,因此当我在房屋外时,我应该无法看到相同的数据“ ABC”。

每次用户更改连接时,您都可以在BroadcastReceiver中捕获该连接。

  • 首先,您需要在AndroidManifest.xml中声明以下权限

     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 
  • 创建一个BroadcastReceiver

     public class BrodcastNetwork extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // Write your code here } } 
  • 将过滤器应用于BroadcastReceiver

      <receiver android:name="com.example.datausage.BrodcastNetwork" > <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" > </action> </intent-filter> </receiver> 
  • 编写广播接收器,如下所示

     public class TheBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { WifiManager wifiManager = (WifiManager) context .getSystemService(Context.WIFI_SERVICE); NetworkInfo datainfo = intent .getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO); if (datainfo != null) { if (datainfo.getType() == ConnectivityManager.TYPE_WIFI) { //have different network states here if (datainfo.getState() == datainfo.State.CONNECTING || datainfo.getState() == datainfo.State.CONNECTED) { //work accordingly } } } } } 
  • 注册一个BroadcastReceiver并在清单中注册这些条目

      <receiver android:name="yours package details like com.abcTheBroadcastReceiver " > <intent-filter> <action android:name="android.net.wifi.supplicant.CONNECTION_CHANGE" /> <action android:name="android.net.wifi.STATE_CHANGE" /> </intent-filter> </receiver> 
  • 在清单中添加以下权限集

      <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> 
  • 另请访问http://developer.android.com/training/monitoring-device-state/connectivity-monitoring.html

  1. 注册广播接收器以收听操作“ android.net.ConnectivityManager.CONNECTIVITY_ACTION”
  2. 当连接更改为“已连接”状态时,调用WifiManager.getConnectionInfo()。getBSSID()来检查当前访问点ID

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM