美文网首页
Android之WIFI-网络可用性校验(NetworkMoni

Android之WIFI-网络可用性校验(NetworkMoni

作者: 锄禾豆 | 来源:发表于2022-02-03 22:12 被阅读0次
        public static String getSummary(Context context, String ssid, DetailedState state,
                boolean isEphemeral, String passpointProvider) {
            ······
                            // Case when there is wifi connected without internet connectivity.
            final ConnectivityManager cm = (ConnectivityManager)
                    context.getSystemService(Context.CONNECTIVITY_SERVICE);
            if (state == DetailedState.CONNECTED) {
                IWifiManager wifiManager = IWifiManager.Stub.asInterface(
                        ServiceManager.getService(Context.WIFI_SERVICE));
                NetworkCapabilities nc = null;
    
                try {
                    nc = cm.getNetworkCapabilities(wifiManager.getCurrentNetwork());
                } catch (RemoteException e) {}
    
                if (nc != null) {
                    if (nc.hasCapability(nc.NET_CAPABILITY_CAPTIVE_PORTAL)) {
                        return context.getString(
                            com.android.internal.R.string.network_available_sign_in);//登录到网络
                    } else if (!nc.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)) {
                        return context.getString(R.string.wifi_connected_no_internet);//已连接,但无法访问互联网
                    }
                }
            }
            ······
                    
        }
    

    效果展示

    adb shell am start -n com.android.settings/.Settings
    打开原生设置 进入wifi列表可查看效果
    

    原生设置wifi业务连接判断

    WifiSettings.java  --- > WifiTracker.java
    
    连接网络:
    采用 wifimanager.connect 连接网络
    
    采用 广播WifiManager.NETWORK_STATE_CHANGED_ACTION 监听连接成功
    
    
    删除网络:
    mWifiManager.forget
    

    相关文章

      网友评论

          本文标题:Android之WIFI-网络可用性校验(NetworkMoni

          本文链接:https://www.haomeiwen.com/subject/dgvxkrtx.html