ConnectivityManager 怎样检测4G网络连接是否有效
时间: 2024-02-20 18:59:13 浏览: 58
ConnectivityManager 检测 4G 网络连接是否有效,可以通过实现 `NetworkCallback` 接口来监听网络连接状态变化,从而获取网络连接的有效性。
具体的代码示例如下:
```java
private ConnectivityManager connMgr;
private NetworkCallback networkCallback;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
connMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
networkCallback = new NetworkCallback() {
@Override
public void onAvailable(Network network) {
// 网络连接已建立,可以通过网络访问数据
if (isConnectedTo4GNetwork()) {
// 4G 网络连接有效
} else {
// 4G 网络连接无效
}
}
@Override
public void onLost(Network network) {
// 网络连接已断开
}
};
// 注册网络状态监听器
NetworkRequest request = new NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
.build();
connMgr.registerNetworkCallback(request, networkCallback);
}
private boolean isConnectedTo4GNetwork() {
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
return networkInfo != null && networkInfo.getType() == ConnectivityManager.TYPE_MOBILE && networkInfo.getSubtype() == TelephonyManager.NETWORK_TYPE_LTE;
}
@Override
protected void onDestroy() {
super.onDestroy();
// 取消网络状态监听器的注册
connMgr.unregisterNetworkCallback(networkCallback);
}
```
在上面的代码中,我们首先定义了一个 `NetworkCallback` 对象,用于监听网络连接状态变化。在 `onAvailable()` 方法中,通过调用 `isConnectedTo4GNetwork()` 方法判断当前是否为 4G 网络连接,如果是 4G 网络连接,表示网络连接有效;否则,表示网络连接无效。
`isConnectedTo4GNetwork()` 方法的实现与前面所介绍的方式相同,即通过 `getActiveNetworkInfo()` 方法获取当前的网络连接信息,然后判断当前网络类型是否为移动网络,并且子类型是否是 LTE 网络。
在 `onLost()` 方法中,表示网络连接已断开。
最后,在 `onCreate()` 方法中,我们通过 `registerNetworkCallback()` 方法注册了网络状态监听器,监视移动网络的连接状态变化。在 `onDestroy()` 方法中,我们通过 `unregisterNetworkCallback()` 方法取消了网络状态监听器的注册。
阅读全文