首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Harmony Os中检查设备是否连接到互联网和连接类型

如何在Harmony Os中检查设备是否连接到互联网和连接类型
EN

Stack Overflow用户
提问于 2021-10-11 08:52:38
回答 2查看 127关注 0票数 1

我正在尝试检查设备是否连接到互联网,以及网络类型是什么。以下是我们如何在android中检查它的示例

代码语言:javascript
复制
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;
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-12 01:51:40

添加权限ohos.permission.GET_NETWORK_INFO,用于获取网络信息。添加权限ohos.permission.INTERNET,用于访问网络。

·检查网络是否已连接

代码语言:javascript
复制
public static boolean hasInternetConnection(Context context) {
        NetManager netManager = NetManager.getInstance(context);
        NetCapabilities netCapabilities = netManager.getNetCapabilities(netManager.getDefaultNet());
        return netCapabilities.hasCap(NetCapabilities.NET_CAPABILITY_VALIDATED);
}

·检查WiFi是否已连接

代码语言:javascript
复制
public static boolean isWifiConnectedInternet(Context context) {
       NetManager netManager = NetManager.getInstance(context);
       NetCapabilities netCapabilities = netManager.getNetCapabilities(netManager.getDefaultNet());
       return netCapabilities.hasCap(NetCapabilities.NET_CAPABILITY_VALIDATED) &&
                netCapabilities.hasBearer(NetCapabilities.BEARER_WIFI) ||
                netCapabilities.hasBearer(NetCapabilities.BEARER_WIFI_AWARE);
}

·检查移动网络是否已连接

代码语言:javascript
复制
public static boolean isMobileConnectedInternet(Context context) {
        NetManager netManager = NetManager.getInstance(context);
        NetCapabilities netCapabilities = netManager.getNetCapabilities(netManager.getDefaultNet());
        return netCapabilities.hasCap(NetCapabilities.NET_CAPABILITY_VALIDATED) &&
                netCapabilities.hasBearer(NetCapabilities.BEARER_CELLULAR);
    }
票数 1
EN

Stack Overflow用户

发布于 2021-10-12 03:11:15

您可以参考此Docs来检查互联网连接的状态。

并且TelephonyConstants.NETWORK_TYPE_LTE可以确定网络类型。

代码语言:javascript
复制
// Obtain the RadioInfoManager object.
RadioInfoManager radioInfoManager = RadioInfoManager.getInstance(context);

// Obtain the signal information.
List<SignalInformation> signalList = radioInfoManager.getSignalInfoList(slotId);

// Check the size of the signal information list.
if (signalList.size() == 0) {
    return;
}
// Traverse the signal information list to obtain the signal information of the current network type.
LteSignalInformation lteSignal = null;
for (SignalInformation signal : signalList) {
    int signalNetworkType = signal.getNetworkType();
    if (signalNetworkType == TelephonyConstants.NETWORK_TYPE_LTE) {
        lteSignal = (LteSignalInformation) signal;
    }
}
// Obtain the signal strength of the specified RAT (methods in the child class).
int signalLevel = lteSignal != null ? lteSignal.getSignalLevel() : 0;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69523460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档