如何在HarmonyOS中检测设备网络连接状态及网络连接类型
Android 设备联网状态与网络类型检测实现
功能说明
我们需要实现两个核心检测逻辑:
- 判断设备当前是否已接入互联网
- 区分当前使用的网络类型(移动数据/WiFi)
前置权限声明
使用该功能前需要先在AndroidManifest.xml中添加网络状态访问权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
实现代码
public boolean isConnectingToInternet(Activity act){ boolean isthere = false; TelephonyManager tm = (TelephonyManager) act.getSystemService(Context.TELEPHONY_SERVICE); if (tm.getSimState() != TelephonyManager.SIM_STATE_UNKNOWN){ ConnectivityManager connectivityManager = (ConnectivityManager) act.getSystemService(Context.CONNECTIVITY_SERVICE); if ((connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED ||connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED)) isthere = true; } else { ConnectivityManager connectivityManager = (ConnectivityManager) act.getSystemService(Context.CONNECTIVITY_SERVICE); if ((connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED)) isthere = true; } return isthere; }
逻辑说明
- 首先读取设备SIM卡状态,如果SIM卡可被正常识别,会同时检测移动数据网络和WiFi网络的连接状态,任意一种网络处于已连接状态就判定为已联网
- 如果设备未识别到SIM卡,仅检测WiFi网络的连接状态,判定是否已联网
版本适配说明
注意:上述代码中使用的getNetworkInfo方法在Android 10(API 29)及以上系统版本已被官方废弃,更高版本系统推荐使用NetworkCapabilities类实现同类检测逻辑
内容的提问来源于stack exchange,提问作者Raj Bhagat
相关产品推荐
相关产品推荐

