--- a/frameworks/opt/net/ethernet/java/com/android/server/ethernet/EthernetNetworkFactory.java+++ b/frameworks/opt/net/ethernet/java/com/android/server/ethernet/EthernetNetworkFactory.java@@ -146,7 +146,8 @@ class EthernetNetworkFactory {      */     private void updateInterfaceState(String iface, boolean up) {         if (!mIface.equals(iface)) {-            //return;+            if(iface.equals("eth1")){ //增加一个判断优化影响wifi问题+             mIface = iface; //更新mIface后面dhcp IP用+             }else{+             return;+                }         }         Log.d(TAG, "updateInterface: " + iface + " link " + (up ? "up" : "down"));

Note1:

      Android 7 默认开机测试eth0是up的,eth1是down的,"cat: /sys/class/net/eth1/carrier: Invalid argument",网上说:有的网口为了省电驱动默认是down的,需要ifconfig eth1 up。QCOM平台双usb转网测试eth1开机需要手动"ifconfig eth1 up"才正常。这一行命令开机写到开机脚本也失败。暂时计划apk自启动后下发。测试可行。

//Android 7 framework层usb转网插拔、网线插拔检测类private class InterfaceObserver extends BaseNetworkObserver {        @Override        public void interfaceLinkStateChanged(String iface, boolean up) {            updateInterfaceState(iface, up); //网线插拔调用        }        @Override        public void interfaceAdded(String iface) {            maybeTrackInterface(iface); //usb转网连接调用        }        @Override        public void interfaceRemoved(String iface) {            stopTrackingInterface(iface); //usb转网移除调用        }    }

Note2:

        Android 7 以太网连接符号"<......>"只有eth1网口分配到IP地址后才会显示,手动ifconfig分配一个IP地址也可以显示。系统默认是只支持dhcp分配ip地址,在framework层onRequestNetwork函数中。

if (config.getIpAssignment() == IpAssignment.STATIC) {//静态                    if (!setStaticIpAddress(config.getStaticIpConfiguration())) {                        // We've already logged an error.                        return;                    }                    linkProperties = config.getStaticIpConfiguration().toLinkProperties(mIface);                } else {//动态                    mNetworkInfo.setDetailedState(DetailedState.OBTAINING_IPADDR, null, mHwAddr);                    WaitForProvisioningCallback ipmCallback = new WaitForProvisioningCallback() {                        @Override                        public void onLinkPropertiesChange(LinkProperties newLp) {                            synchronized(EthernetNetworkFactory.this) {                                if (mNetworkAgent != null && mNetworkInfo.isConnected()) {                                    mLinkProperties = newLp;                                    mNetworkAgent.sendLinkProperties(newLp);                                }                            }                        }                    };

 

更多相关文章

  1. android资料下载地址汇总
  2. android 查看系统分配程序内存限制
  3. ubuntu 陪在android sdk 地址映射
  4. 史上版本最全android源码下载地址
  5. android---------ndk中的各个版本的下载地址。
  6. Android 获取当前设备的IP地址

随机推荐

  1. Android(安卓)application 和 activity
  2. android中常见的错误及解决办法
  3. android.os.NetworkOnMainThreadExceptio
  4. Android复习(八)
  5. Android上的log,日志相关
  6. android 软键盘隐藏 activity初始化时edi
  7. Android(安卓)远程链接 daemon not runni
  8. android中的内存泄露
  9. android studio升级时提示 Connection fa
  10. webrtc 针对 android 平台的编译和运行