![](/img/trans.png)
[英]How to trigger a JobScheduler when Wifi state changes(connected or disconnected from Network)?
[英]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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.