Android 实现WiFi切换移动数据的监听
时间: 2024-05-08 20:21:40 浏览: 177
在 Android 中,可以通过 `ConnectivityManager` 来监听网络连接状态的变化,包括 WiFi 和移动数据的切换。
具体实现步骤如下:
1. 在 `AndroidManifest.xml` 中添加以下权限:
```xml
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
```
2. 在需要进行监听的 `Activity` 或 `Service` 中,创建一个 `ConnectivityManager.NetworkCallback` 的回调类:
```java
private ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(Network network) {
// 网络连接可用
super.onAvailable(network);
Log.d(TAG, "onAvailable: " + network);
}
@Override
public void onLost(Network network) {
// 网络连接丢失
super.onLost(network);
Log.d(TAG, "onLost: " + network);
}
@Override
public void onCapabilitiesChanged(Network network, NetworkCapabilities networkCapabilities) {
// 网络连接属性变化
super.onCapabilitiesChanged(network, networkCapabilities);
Log.d(TAG, "onCapabilitiesChanged: " + networkCapabilities);
}
};
```
3. 在 `onCreate()` 方法中获取 `ConnectivityManager` 对象,并注册监听回调:
```java
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
connectivityManager.registerNetworkCallback(new NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR) // 监听移动数据连接
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI) // 监听 WiFi 连接
.build(), networkCallback);
```
4. 在 `onDestroy()` 方法中取消监听回调:
```java
connectivityManager.unregisterNetworkCallback(networkCallback);
```
这样,就可以监听网络连接状态的变化,包括 WiFi 和移动数据的切换了。
阅读全文