rk32887.1双网共存wifi内网以太网外网

1.描述
rk32887.1双网共存wifi内网以太网外网

2.修改

--- a/frameworks/base/core/java/android/net/NetworkFactory.java
+++ b/frameworks/base/core/java/android/net/NetworkFactory.java
@@ -229,7 +229,7 @@ public class NetworkFactory extends Handler {
 
     private void evalRequest(NetworkRequestInfo n) {
         if (VDBG) log("evalRequest");
-        if (n.requested == false && n.score < mScore &&
+        if (n.requested == false && 0 < mScore &&
                 n.request.networkCapabilities.satisfiedByNetworkCapabilities(
                 mCapabilityFilter) && acceptRequest(n.request, n.score)) {
             if (VDBG) log("  needNetworkFor");
diff --git a/frameworks/base/services/core/java/com/android/server/ConnectivityService.java b/frameworks/base/services/core/java/com/android/server/ConnectivityService.java
index 020495f3af..6731769643 100644
--- a/frameworks/base/services/core/java/com/android/server/ConnectivityService.java
+++ b/frameworks/base/services/core/java/com/android/server/ConnectivityService.java
@@ -4805,6 +4805,15 @@ public class ConnectivityService extends IConnectivityManager.Stub
 
         if (ENABLE_NETWORK_COEXIST) {
             log("Skip teardownUnneededNetwork: " + nai.name());
+	    if (nai.getCurrentScore() > 0) {
+                try {
+                    mNetd.removeInterfaceFromNetwork(nai.linkProperties.getInterfaceName(), nai.network.netId);
+                    mNetd.addInterfaceToLocalNetwork(nai.linkProperties.getInterfaceName(), nai.linkProperties.getRoutes());
+                    mLegacyTypeTracker.add(nai.networkInfo.getType(), nai);
+                } catch (RemoteException e) {
+                    Log.e(TAG, "Failed to add iface to local network " + e);
+                }
+            }
         } else {
             nai.asyncChannel.disconnect();
         }
@@ -4953,6 +4962,12 @@ public class ConnectivityService extends IConnectivityManager.Stub
                     } else {
                         if (VDBG) log("   accepting network in place of null");
                     }
+		    if (ENABLE_NETWORK_COEXIST) {
+                        try {
+                            mNetd.removeInterfaceFromLocalNetwork(newNetwork.linkProperties.getInterfaceName());
+                        } catch(RemoteException e) {}
+                        updateLinkProperties(newNetwork,null);
+                    }
                     newNetwork.unlingerRequest(nri.request);
                     mNetworkForRequestId.put(nri.request.requestId, newNetwork);
                     if (!newNetwork.addRequest(nri.request)) {
@@ -5297,6 +5312,11 @@ public class ConnectivityService extends IConnectivityManager.Stub
             // This has to happen after matching the requests, because callbacks are just requests.
             notifyNetworkCallbacks(networkAgent, ConnectivityManager.CALLBACK_PRECHECK);
         } else if (state == NetworkInfo.State.DISCONNECTED) {
+	    if (ENABLE_NETWORK_COEXIST) {
+                try {
+                    mNetd.removeInterfaceFromLocalNetwork(networkAgent.linkProperties.getInterfaceName());
+                } catch(RemoteException e) {}
+            }
             networkAgent.asyncChannel.disconnect();
             if (networkAgent.isVPN()) {
                 synchronized (mProxyLock) {
diff --git a/frameworks/opt/net/ethernet/java/com/android/server/ethernet/EthernetNetworkFactory.java b/frameworks/opt/net/ethernet/java/com/android/server/ethernet/EthernetNetworkFactory.java
index 129989849c..81eff1596b 100755
--- a/frameworks/opt/net/ethernet/java/com/android/server/ethernet/EthernetNetworkFactory.java
+++ b/frameworks/opt/net/ethernet/java/com/android/server/ethernet/EthernetNetworkFactory.java
@@ -15,6 +15,9 @@
  */
 
 package com.android.server.ethernet;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
 import android.os.SystemProperties;
 import android.content.Context;
 import android.net.ConnectivityManager;
@@ -295,11 +298,6 @@ class EthernetNetworkFactory {
     // first disconnect, then connect
     public void reconnect(String iface) {
         Log.d(TAG, "reconnect:");
-        int carrier = getEthernetCarrierState(mIface);
-        if(carrier == 0) {
-            Log.d(TAG, "reconnect: RJ45 no plugin no need reconnect");
-            return ;
-        }
         mReconnecting = true;
 
         if (iface == null)
@@ -466,6 +464,10 @@ class EthernetNetworkFactory {
             return;
         }
 
+	if (mEthernetCurrentState == EthernetManager.ETHER_STATE_CONNECTED){
+            return ;
+        }
+
         synchronized(EthernetNetworkFactory.this) {
             if (mIpProvisioningThread != null) {
                 Log.d(TAG, "mIpProvisioningThread is already running");
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值