--- 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和H5混合开发(一)
  3. Android调用系统分享
  4. android - uri
  5. Android(安卓)ArrayAdapter的使用
  6. 2011.09.07(3)——— android 跨进程通信之Broadcast
  7. Android(安卓)Activity生命周期
  8. android ListView 多次调用 getView方法
  9. Android(安卓)AudioManager控制系统声音的流程

随机推荐

  1. CV学习笔记(十七):Windows环境复现ChineseOC
  2. CV学习笔记(十六):直线检测
  3. 初识 PHP 运行原理及数据类型
  4. php学习笔记(类声明,类的实例化,类的静态成
  5. jQuery 浅析
  6. PHP的接口和抽象类
  7. PHP接口和抽象类|接口与抽象类的区别与联
  8. 安装Win7系统之后键盘鼠标不能用/失灵没
  9. 数组的排序
  10. PHP高级编程函数的返回值和闭包与作用域