【Android】【Ethernet】以太网图标更新

文章描述了SystemUI在Mediatek平台上如何通过log和代码判断设备是否能上网,特别是在连接有无网络的网线时更新connectivity的状态。它通过`NetworkCapabilities.NET_CAPABILITY_VALIDATED`来验证网络连接的有效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

根据log和代码,systemUI通过NetworkCapabilities.NET_CAPABILITY_VALIDATED,判断当前是否能上网,在连hub插入没有网络的网线时,此判断为true,log如下

// 直连有网络的网线

04-29 15:45:53.694 1402 1519 D NetworkController: updateConnectivity: mConnectedTransports={3}
04-29 15:45:53.700 1402 1519 D NetworkController: updateConnectivity: mValidatedTransports={3}
04-29 15:45:53.745 1402 1519 D NetworkController.EthernetSignalController: Change in state from: connected=false,enabled=false,level=0,inetCondition=0,iconGroup=IconGroup(Ethernet Icons),activityIn=false,activityOut=false,rssi=0,lastModified=04-29 15:44:36.567
04-29 15:45:53.745 1402 1519 D NetworkController.EthernetSignalController: to: connected=true,enabled=false,level=0,inetCondition=1,iconGroup=IconGroup(Ethernet Icons),activityIn=false,activityOut=false,rssi=0,lastModified=04-29 15:44:36.567

04-29 15:45:53.747 1402 1519 D NetworkController: onReceive: intent=Intent { act=android.net.conn.CONNECTIVITY_CHANGE flg=0x4200010 (has extras) }

04-29 15:45:53.749 1402 1519 D NetworkController: updateConnectivity: mConnectedTransports={3}

04-29 15:45:53.749 1402 1519 D NetworkController: updateConnectivity: mValidatedTransports={3}

// 直连没有网络的网线

04-29 15:51:06.375 1402 1519 D NetworkController: updateConnectivity: mConnectedTransports={3}

04-29 15:51:06.377 1402 1519 D NetworkController: updateConnectivity: mValidatedTransports={}

04-29 15:51:06.379 1402 1519 D NetworkController.EthernetSignalController: Change in state from: connected=false,enabled=false,level=0,inetCondition=0,iconGroup=IconGroup(Ethernet Icons),activityIn=false,activityOut=false,rssi=0,lastModified=04-29 15:47:14.826
04-29 15:51:06.379 1402 1519 D NetworkController.EthernetSignalController: to: connected=true,enabled=false,level=0,inetCondition=0,iconGroup=IconGroup(Ethernet Icons),activityIn=false,activityOut=false,rssi=0,lastModified=04-29 15:47:14.826
04-29 15:51:06.382 1402 1519 D NetworkController: onReceive: intent=Intent { act=android.net.conn.CONNECTIVITY_CHANGE flg=0x4200010 (has extras) }
04-29 15:51:06.412 1402 1519 D NetworkController: updateConnectivity: mConnectedTransports={3}
04-29 15:51:06.413 1402 1519 D NetworkController: updateConnectivity: mValidatedTransports={}

SystemUI代码如下

\vendor\mediatek\proprietary\packages\apps\SystemUI\src\com\android\systemui\statusbar\policy

/**

 * Update the Inet conditions and what network we are connected to.

 */

private void updateConnectivity() {

    mConnectedTransports.clear();

    mValidatedTransports.clear();

    mCellularSubId = mSubscriptionManager.INVALID_SUBSCRIPTION_ID;

    for (NetworkCapabilities nc :

            mConnectivityManager.getDefaultNetworkCapabilitiesForUser(mCurrentUserId)) {

        for (int transportType : nc.getTransportTypes()) {

            mConnectedTransports.set(transportType);

            if (transportType == NetworkCapabilities.TRANSPORT_CELLULAR) {

                mCellularSubId = getSubIdFromNetrequest(nc.getNetworkSpecifier());

                Log.d(TAG,"mCellularSubId = " + mCellularSubId);

            }

            if (nc.hasCapability(NET_CAPABILITY_VALIDATED)) {

                mValidatedTransports.set(transportType);

            }

        }

    }

    if (mForceCellularValidated) mValidatedTransports.set(TRANSPORT_CELLULAR);

    if (DEBUG) {

        Log.d(TAG, "updateConnectivity: mConnectedTransports=" + mConnectedTransports);

        Log.d(TAG, "updateConnectivity: mValidatedTransports=" + mValidatedTransports);

    }

    mInetCondition = !mValidatedTransports.isEmpty();

    pushConnectivityToSignals();

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值