我正在编写一个连接到特定 WIFI 网络的 android 应用程序。棘手的部分是,当用户手动连接到其他网络时,或者关闭 WIFI,或者连接丢失(因为用户走开)......我需要忘记这个网络(removeNetwork)。
我的问题如下:我该怎么做才能做到这一点?
- 我是否需要创建一个在后台运行的服务,每 5 分钟检查一次 WIFI 的状态?
- 当WIFI改变某些特定状态时,是否有任何“挂钩”方法来运行类、方法、函数?
- 解决此问题的最佳方法是什么?
真的感谢!
我正在编写一个连接到特定 WIFI 网络的 android 应用程序。棘手的部分是,当用户手动连接到其他网络时,或者关闭 WIFI,或者连接丢失(因为用户走开)......我需要忘记这个网络(removeNetwork)。
我的问题如下:我该怎么做才能做到这一点?
真的感谢!
我建议您在您的应用程序中实现一个广播接收器,只要网络或 wifi 连接有任何变化就可以激活,并且在该广播接收器的 onRecieve() 方法中,您可以在连接丢失时进行任何类型的处理.
这在你的清单中
<receiver android:name=".WifiReceiver" >
<intent-filter>
<action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
</intent-filter>
</receiver>
这是java代码。公共类 WifiReceiver 扩展 BroadcastReceiver { private final String TAG = "WifiReceiver";
@Override
public void onReceive(Context context, Intent intent) {
int wifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_UNKNOWN);
String wifiStateText = "No State";
switch (wifiState) {
case WifiManager.WIFI_STATE_DISABLING:
wifiStateText = "WIFI_STATE_DISABLING";
break;
case WifiManager.WIFI_STATE_DISABLED:
wifiStateText = "WIFI_STATE_DISABLED";
break;
case WifiManager.WIFI_STATE_ENABLING:
wifiStateText = "WIFI_STATE_ENABLING";
break;
case WifiManager.WIFI_STATE_ENABLED:
wifiStateText = "WIFI_STATE_ENABLED";
break;
case WifiManager.WIFI_STATE_UNKNOWN:
wifiStateText = "WIFI_STATE_UNKNOWN";
break;
default:
break;
}
MyLog.d(TAG, "onReceive Broadcast > WiFiState: " + wifiStateText);
MyLog.d(TAG, "onReceive Broadcast > Time: " + new Date());
}
并且不要忘记添加以下权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />