https://blog.csdn.net/zhouyuanjing/article/details/78415891

Android 7.0 自带EthernetService,默认开机就会启动,默认ip获取方式是动态分配(DHCP),有时候公司路由器DNS设置有问题,导致无法上网(能ping通局域网,无法上外网),手动设置静态IP就派上用场了。

废话不多说了,上图

修改记录:

alps/device/xxxxx/xxx6737t_35g_n/device.mk
alps/frameworks/base/core/java/android/net/EthernetManager.java
alps/frameworks/base/core/java/android/net/IEthernetManager.aidl
alps/frameworks/base/core/java/android/provider/Settings.java
alps/frameworks/base/core/res/res/values/config.xml
alps/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
alps/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
alps/frameworks/base/proto/src/metrics_constants.proto
alps/frameworks/opt/net/ethernet/java/com/android/server/ethernet/EthernetNetworkFactory.java
alps/frameworks/opt/net/ethernet/java/com/android/server/ethernet/EthernetServiceImpl.java
alps/packages/apps/Settings/AndroidManifest.xml
alps/packages/apps/Settings/res/drawable-hdpi/ic_settings_ethernet.png
alps/packages/apps/Settings/res/layout/ethernet_configure.xml
alps/packages/apps/Settings/res/values-zh-rCN/strings.xml
alps/packages/apps/Settings/res/values/strings.xml
alps/packages/apps/Settings/res/xml/ethernet_settings.xml
alps/packages/apps/Settings/src/com/android/settings/Settings.java
alps/packages/apps/Settings/src/com/android/settings/SettingsActivity.java
alps/packages/apps/Settings/src/com/android/settings/ethernet/EthernetDialog.java
alps/packages/apps/Settings/src/com/android/settings/ethernet/EthernetEnabler.java
alps/packages/apps/Settings/src/com/android/settings/ethernet/EthernetSettings.java
alps/packages/apps/Settings/src/com/android/settings/ethernet/ip/AbsEditText.java
alps/packages/apps/Settings/src/com/android/settings/ethernet/ip/AbsEditTextGroup.java
alps/packages/apps/Settings/src/com/android/settings/ethernet/ip/IPEditText.java
alps/packages/apps/Settings/src/com/android/settings/ethernet/ip/IPView.java

1. device/xxxxx/xxx6737t_35g_n/device.mk

diff --git a/alps/device/xxxxx/xxx6737t_35g_n/device.mk b/alps/device/xxxxx/xxx6737t_35g_n/device.mk
index 71f1a5c..8ce0e36 100755 (executable)
--- a/alps/device/xxxxx/xxx6737t_35g_n/device.mk
+++ b/alps/device/xxxxx/xxx6737t_35g_n/device.mk
@@ -141,6 +141,9 @@ endif
 # USB OTG
 PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.usb.host.xml:system/etc/permissions/android.hardware.usb.host.xml
 
+# Ethernet
+PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.ethernet.xml:system/etc/permissions/android.hardware.ethernet.xml
+
 # GPS relative file
 ifeq ($(MTK_GPS_SUPPORT),yes)

2. frameworks/base/core/java/android/net/EthernetManager.java

diff --git a/alps/frameworks/base/core/java/android/net/EthernetManager.java b/alps/frameworks/base/core/java/android/net/EthernetManager.java
index 664b7b4..44592be 100755 (executable)
--- a/alps/frameworks/base/core/java/android/net/EthernetManager.java
+++ b/alps/frameworks/base/core/java/android/net/EthernetManager.java
@@ -35,6 +35,10 @@ public class EthernetManager {
     private static final String TAG = "EthernetManager";
     private static final int MSG_AVAILABILITY_CHANGED = 1000;
 
+    public static final int ETHERNET_STATE_UNKNOWN  = 0;  
+    public static final int ETHERNET_STATE_DISABLED = 1;  
+    public static final int ETHERNET_STATE_ENABLED  = 2; 
+
     private final Context mContext;
     private final IEthernetManager mService;
     private final Handler mHandler = new Handler() {
@@ -152,4 +156,19 @@ public class EthernetManager {
             }
         }
     }
+
+    public void start() {
+        try {
+            mService.trackStart();
+        } catch (NullPointerException | RemoteException e) {
+        }
+    }
+  
+    public void stop() {
+        try {
+            mService.trackStop();
+        } catch (NullPointerException | RemoteException e) {
+        }
+    }
+
 }

3. frameworks/base/core/java/android/net/IEthernetManager.aidl

diff --git a/alps/frameworks/base/core/java/android/net/IEthernetManager.aidl b/alps/frameworks/base/core/java/android/net/IEthernetManager.aidl
index 7a92eb9..d2014ad 100755 (executable)
--- a/alps/frameworks/base/core/java/android/net/IEthernetManager.aidl
+++ b/alps/frameworks/base/core/java/android/net/IEthernetManager.aidl
@@ -31,4 +31,6 @@ interface IEthernetManager
     boolean isAvailable();
     void addListener(in IEthernetServiceListener listener);
     void removeListener(in IEthernetServiceListener listener);
+    void trackStart(); 
+    void trackStop();
 }

4. frameworks/base/core/java/android/provider/Settings.java

diff --git a/alps/frameworks/base/core/java/android/provider/Settings.java b/alps/frameworks/base/core/java/android/provider/Settings.java
index 1e0a53a..817b008 100755 (executable)
--- a/alps/frameworks/base/core/java/android/provider/Settings.java
+++ b/alps/frameworks/base/core/java/android/provider/Settings.java
@@ -9832,6 +9832,48 @@ public final class Settings {
         public static final String CURRENT_NETWORK_CALL = "current_network_call";
         /// MTK ADD END. @}
 
+        /**
+         * ethernet setting is enabled or disable.
+         *
+         * @hide
+         */
+        public static final String ETHERNET_ON = "ethernet_on";
+
+        /**
+         * ethernet_static_ip setting
+         *
+         * @hide
+         */
+        public static final String ETHERNET_STATIC_IP = "ethernet_static_ip";
+
+        /**
+         * ethernet_static_mask setting
+         *
+         * @hide
+         */
+        public static final String ETHERNET_STATIC_MASK = "ethernet_static_mask";
+
+        /**
+         * ethernet_static_gateway setting
+         *
+         * @hide
+         */
+        public static final String ETHERNET_STATIC_GATEWAY = "ethernet_static_gateway";
+
+        /**
+         * ethernet_static_dns1 setting
+         *
+         * @hide
+         */
+        public static final String ETHERNET_STATIC_DNS1 = "ethernet_static_dns1";
+
+        /**
+         * ethernet_static_dns2 setting
+         *
+         * @hide
+         */
+        public static final String ETHERNET_STATIC_DNS2 = "ethernet_static_dns2";
+
     }
 
     /**

5. frameworks/base/core/res/res/values/config.xml

diff --git a/alps/frameworks/base/core/res/res/values/config.xml b/alps/frameworks/base/core/res/res/values/config.xml
index 9aac18e..d790573 100755 (executable)
--- a/alps/frameworks/base/core/res/res/values/config.xml
+++ b/alps/frameworks/base/core/res/res/values/config.xml
@@ -232,6 +232,7 @@
          does not require auto-restore. -->
     <!-- the 6th element indicates boot-time dependency-met value. -->
     <string-array translatable="false" name="networkAttributes">
+        <item>"ethernet,9,9,1,-1,true"</item>
         <item>"wifi,1,1,2,-1,true"</item>
         <item>"tedongle,49,49,1,-1,true"</item>
         <item>"mobile,0,0,0,-1,true"</item>

6. frameworks/base/packages/SettingsProvider/res/values/defaults.xml

diff --git a/alps/frameworks/base/packages/SettingsProvider/res/values/defaults.xml b/alps/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
index f50436b..72298cc 100755 (executable)
--- a/alps/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
+++ b/alps/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
@@ -219,4 +219,17 @@
 
     <!-- Default for Settings.Secure.SKIP_FIRST_USE_HINTS -->
     <integer name="def_skip_first_use_hints">1</integer>
+
+    <!-- Default for Settings.Global.ETHERNET_ON {ETHERNET_STATE_UNKNOWN,ETHERNET_STATE_DISABLED,ETHERNET_STATE_ENABLED}-->
+    <integer name="def_ethernet_on">2</integer>
+    <!-- Default for Settings.Global.ETHERNET_STATIC_IP-->
+    <string name="def_ethernet_static_ip"></string>
+    <!-- Default for Settings.Global.ETHERNET_STATIC_MASK-->
+    <string name="def_ethernet_static_mask">255.255.255.0</string>
+    <!-- Default for Settings.Global.ETHERNET_STATIC_GATEWAY-->
+    <string name="def_ethernet_static_gateway"></string>
+    <!-- Default for Settings.Global.ETHERNET_STATIC_DNS1-->
+    <string name="def_ethernet_static_dns1"></string>
+    <!-- Default for Settings.Global.ETHERNET_STATIC_DNS2-->
+    <string name="def_ethernet_static_dns2"></string>
 </resources>

7. frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java

diff --git a/alps/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/alps/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
index 3ad22dd..3eb3fe7 100755 (executable)
--- a/alps/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
+++ b/alps/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
@@ -2755,6 +2755,19 @@ class DatabaseHelper extends SQLiteOpenHelper {
             loadSetting(stmt, Settings.Global.ENHANCED_4G_MODE_ENABLED,
                     ImsConfig.FeatureValueConstants.ON);
 
+            loadIntegerSetting(stmt, Settings.Global.ETHERNET_ON,
+                    R.integer.def_ethernet_on);
+            loadStringSetting(stmt, Settings.Global.ETHERNET_STATIC_IP,
+                    R.string.def_ethernet_static_ip);
+            loadStringSetting(stmt, Settings.Global.ETHERNET_STATIC_MASK,
+                    R.string.def_ethernet_static_mask);
+            loadStringSetting(stmt, Settings.Global.ETHERNET_STATIC_GATEWAY,
+                    R.string.def_ethernet_static_gateway);
+            loadStringSetting(stmt, Settings.Global.ETHERNET_STATIC_DNS1,
+                    R.string.def_ethernet_static_dns1);
+            loadStringSetting(stmt, Settings.Global.ETHERNET_STATIC_DNS2,
+                    R.string.def_ethernet_static_dns2);
+
             /// M: Load MTK added Global providers before Android M.
             mUtils.loadCustomGlobalSettings(stmt);

8. frameworks/opt/net/ethernet/java/com/android/server/ethernet/EthernetNetworkFactory.java

diff --git a/alps/frameworks/opt/net/ethernet/java/com/android/server/ethernet/EthernetNetworkFactory.java b/alps/frameworks/opt/net/ethernet/java/com/android/server/ethernet/EthernetNetworkFactory.java
index 0b091f2..5a268ab 100755 (executable)
--- a/alps/frameworks/opt/net/ethernet/java/com/android/server/ethernet/EthernetNetworkFactory.java
+++ b/alps/frameworks/opt/net/ethernet/java/com/android/server/ethernet/EthernetNetworkFactory.java
@@ -105,6 +105,8 @@ class EthernetNetworkFactory {
     private IpManager mIpManager;
     private Thread mIpProvisioningThread;
 
+    private Handler mHandler;
+
     EthernetNetworkFactory(RemoteCallbackList<IEthernetServiceListener> listeners) {
         mNetworkInfo = new NetworkInfo(ConnectivityManager.TYPE_ETHERNET, 0, NETWORK_TYPE, "");
         mLinkProperties = new LinkProperties();
@@ -298,6 +300,12 @@ class EthernetNetworkFactory {
                 if (config.getIpAssignment() == IpAssignment.STATIC) {
                     if (!setStaticIpAddress(config.getStaticIpConfiguration())) {
                         // We've already logged an error.
+                        //if error then stop and restart
+                        if((mContext != null) && (mHandler != null)) {
+                            Log.d(TAG, "Setting static ip failed now restart");
+                            stop();
+                            start(mContext,mHandler);
+                        }
                         return;
                     }
                     linkProperties = config.getStaticIpConfiguration().toLinkProperties(mIface);
@@ -426,6 +434,7 @@ class EthernetNetworkFactory {
         mFactory.register();
 
         mContext = context;
+        mHandler = target;
 
         // Start tracking interface change events.
         mInterfaceObserver = new InterfaceObserver();
@@ -449,6 +458,9 @@ class EthernetNetworkFactory {
                         // configuring it. Since we're already holding the lock,
                         // any real link up/down notification will only arrive
                         // after we've done this.
+                        if(!iface.equals("eth0")) {
+                            continue;
+                        }
                         if (mNMService.getInterfaceConfig(iface).hasFlag("running")) {
                             updateInterfaceState(iface, true);
                         }

9. frameworks/opt/net/ethernet/java/com/android/server/ethernet/EthernetServiceImpl.java

diff --git a/alps/frameworks/opt/net/ethernet/java/com/android/server/ethernet/EthernetServiceImpl.java b/alps/frameworks/opt/net/ethernet/java/com/android/server/ethernet/EthernetServiceImpl.java
index 42996d6..9508b79 100755 (executable)
--- a/alps/frameworks/opt/net/ethernet/java/com/android/server/ethernet/EthernetServiceImpl.java
+++ b/alps/frameworks/opt/net/ethernet/java/com/android/server/ethernet/EthernetServiceImpl.java
@@ -18,6 +18,7 @@ package com.android.server.ethernet;
 
 import android.content.Context;
 import android.content.pm.PackageManager;
+import android.net.EthernetManager;
 import android.net.IEthernetManager;
 import android.net.IEthernetServiceListener;
 import android.net.IpConfiguration;
@@ -26,6 +27,7 @@ import android.net.IpConfiguration.ProxySettings;
 import android.os.Binder;
 import android.os.Handler;
 import android.os.HandlerThread;
+import android.os.Looper;
 import android.os.RemoteCallbackList;
 import android.os.RemoteException;
 import android.provider.Settings;
@@ -38,6 +40,12 @@ import java.io.FileDescriptor;
 import java.io.PrintWriter;
 import java.util.concurrent.atomic.AtomicBoolean;
 
+import android.net.Uri;
+import android.provider.Settings.System;
+import android.net.StaticIpConfiguration;
+import android.net.LinkAddress;
+import java.net.InetAddress;
+
 /**
  * EthernetServiceImpl handles remote Ethernet operation requests by implementing
  * the IEthernetManager interface.
@@ -87,11 +95,42 @@ public class EthernetServiceImpl extends IEthernetManager.Stub {
         handlerThread.start();
         mHandler = new Handler(handlerThread.getLooper());
 
+        int enable = Settings.Global.getInt(mContext.getContentResolver(),
+                Settings.Global.ETHERNET_ON, 0); 
+        if(enable != EthernetManager.ETHERNET_STATE_ENABLED) {
+            Log.i(TAG, "Ethernet is not enable");
+            return;
+        }
+
         mTracker.start(mContext, mHandler);
 
         mStarted.set(true);
     }
 
+    public void trackStart() {
+        Log.i(TAG, "Statr ethernet service"); 
+        new Thread(new Runnable() {
+            public void run() {
+                Looper.prepare();  
+                mTracker.start(mContext, mHandler);  
+                mStarted.set(true);  
+                Looper.loop(); 
+            }
+        }).start();;
+    }
+
+    public void trackStop() {
+        Log.i(TAG, "Stop ethernet service");
+        new Thread(new Runnable() {
+            public void run() {
+                Looper.prepare();
+                mTracker.stop();
+                mStarted.set(false);
+                Looper.loop();
+            }
+        }).start();;
+    }
+
     /**
      * Get Ethernet configuration
      * @return the Ethernet Configuration, contained in {@link IpConfiguration}.

10. packages/apps/Settings/AndroidManifest.xml

diff --git a/alps/packages/apps/Settings/AndroidManifest.xml b/alps/packages/apps/Settings/AndroidManifest.xml
index 8f1cfc1..9a02ea3 100644 (file)
--- a/alps/packages/apps/Settings/AndroidManifest.xml
+++ b/alps/packages/apps/Settings/AndroidManifest.xml
@@ -465,6 +465,46 @@
             </intent-filter>
         </activity>
 
+        <activity
+            android:name="Settings$EthernetSettingsActivity"
+            android:label="@string/ethernet_settings"
+            android:icon="@drawable/ic_settings_ethernet"
+            android:taskAffinity="" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <action android:name="com.android.settings.ETHERNET_SETTINGS" />
+                <action android:name="android.settings.ETHERNET_SETTINGS" />
+
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.VOICE_LAUNCH" />
+                <category android:name="com.android.settings.SHORTCUT" />
+            </intent-filter>
+
+            <intent-filter android:priority="3">
+                <action android:name="com.android.settings.action.SETTINGS" />
+            </intent-filter>
+            <meta-data
+                android:name="com.android.settings.category"
+                android:value="com.android.settings.category.wireless" />
+            <meta-data
+                android:name="com.android.settings.FRAGMENT_CLASS"
+                android:value="com.android.settings.ethernet.EthernetSettings" />
+            <meta-data
+                android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
+                android:value="true" />
+        </activity>
+
+        <!-- Keep compatibility with old shortcuts. -->
+        <activity-alias android:name=".ethernet.EthernetSettings"
+                android:label="@string/ethernet_settings"
+                android:targetActivity="Settings$EthernetSettingsActivity"
+                android:exported="true"
+                android:clearTaskOnLaunch="true">
+            <meta-data
+                android:name="com.android.settings.FRAGMENT_CLASS"
+                android:value="com.android.settings.ethernet.EthernetSettings" />
+        </activity-alias>
+
         <service android:name=".TetherService"
             android:exported="true"
             android:permission="android.permission.TETHER_PRIVILEGED" />
@@ -2404,11 +2444,11 @@
                 android:label="@string/crypt_keeper_encrypt_title">

11. packages/apps/Settings/res/drawable-hdpi/ic_settings_ethernet.png

12. packages/apps/Settings/res/layout/ethernet_configure.xml

13. packages/apps/Settings/res/values-zh-rCN/strings.xml

diff --git a/alps/packages/apps/Settings/res/values-zh-rCN/strings.xml b/alps/packages/apps/Settings/res/values-zh-rCN/strings.xml
index 47cbe80..5fd7ba5 100755 (executable)
--- a/alps/packages/apps/Settings/res/values-zh-rCN/strings.xml
+++ b/alps/packages/apps/Settings/res/values-zh-rCN/strings.xml
@@ -3099,4 +3099,31 @@
     <string name="bluetooth_talkback_headphone" msgid="26580326066627664">"耳机"</string>
     <string name="bluetooth_talkback_input_peripheral" msgid="5165842622743212268">"外围输入设备"</string>
     <string name="bluetooth_talkback_bluetooth" msgid="5615463912185280812">"蓝牙"</string>
+    <!-- Ethernet settings string -->
+    <string name="ethernet_settings">以太网</string>
+    <string name="eth_config_title">配置以太网</string>
+    <string name="eth_setting">以太网</string>
+    <string name="eth_dev_list">以太网:</string>
+    <string name="eth_con_type">连接类型</string>
+    <string name="eth_con_type_dhcp">自动获取 IP</string>
+    <string name="eth_con_type_manual">静态 IP</string>
+    <string name="eth_dns1">首选 DNS 服务器</string>
+    <string name="eth_dns2">备用 DNS 服务器</string>
+    <string name="eth_gw">默认网关</string>
+    <string name="eth_ipaddr">IP 地址</string>
+    <string name="eth_quick_toggle_title">以太网</string>
+    <string name="eth_quick_toggle_summary">开启以太网</string>
+    <string name="eth_conf_perf_title">配置以太网</string>
+    <string name="eth_conf_summary">配置以太网</string>
+    <string name="eth_mask">子网掩码</string>
+    <string name="eth_toggle_summary_off">关闭以太网</string>
+    <string name="eth_toggle_summary_on">开启以太网</string>
+    <string name="eth_settings_error">请输入有效字符0~255</string>
+    <string name="eth_settings_empty">网络信息不能为空</string>
+    <string name="eth_settings_not_complete">网络信息需填写完整</string>
+    <!-- Label for the network prefix of the network [CHAR LIMIT=25] -->
+    <string name="eth_network_prefix_length">前缀长度</string>
+    <string name="eth_open_ethernet_tip">请打开以太网.</string>
+    <string name="eth_state_on">已开启</string>
+    <string name="eth_state_off">已关闭</string>
 </resources>

14. packages/apps/Settings/res/values/strings.xml

diff --git a/alps/packages/apps/Settings/res/values/strings.xml b/alps/packages/apps/Settings/res/values/strings.xml
index 38bc124..c3798fd 100755 (executable)
--- a/alps/packages/apps/Settings/res/values/strings.xml
+++ b/alps/packages/apps/Settings/res/values/strings.xml
@@ -7500,4 +7500,32 @@
 
     <!-- Message for telling the user the kind of BT device being displayed in list. -->
     <string name="bluetooth_talkback_bluetooth">Bluetooth</string>
+
+    <!-- Ethernet settings string -->
+    <string name="ethernet_settings">Ethernet</string>
+    <string name="eth_config_title">Configure Ethernet device</string>
+    <string name="eth_setting">Ethernet</string>
+    <string name="eth_dev_list">Ethernet Devices:</string>
+    <string name="eth_con_type">Connection Type</string>
+    <string name="eth_con_type_dhcp">DHCP</string>
+    <string name="eth_con_type_manual">Static IP</string>
+    <string name="eth_dns1">Preferred DNS address</string>
+    <string name="eth_dns2">Alternate DNS address</string>
+    <string name="eth_gw">Gateway address</string>
+    <string name="eth_ipaddr">IP address</string>
+    <string name="eth_quick_toggle_title">Ethernet</string>
+    <string name="eth_quick_toggle_summary">Turn on Ethernet</string>
+    <string name="eth_conf_perf_title">Ethernet configuration</string>
+    <string name="eth_conf_summary">Configure Ethernet devices</string>
+    <string name="eth_mask">Netmask</string>
+    <string name="eth_toggle_summary_off">Turn off Ethernet</string>
+    <string name="eth_toggle_summary_on">Turn on Ethernet</string>
+    <string name="eth_settings_error">Please enter the valid characters 0~255</string>
+    <string name="eth_settings_empty">Network information can\'t be empty</string>
+    <string name="eth_settings_not_complete">Network information must be completely</string>
+    <!-- Label for the network prefix of the network [CHAR LIMIT=25] -->
+    <string name="eth_network_prefix_length">Network prefix length</string>
+    <string name="eth_open_ethernet_tip">Please turn on ethernet.</string>
+    <string name="eth_state_on">On</string>
+    <string name="eth_state_off">Off</string>
 </resources>

15. packages/apps/Settings/res/xml/ethernet_settings.xml

16. packages/apps/Settings/src/com/android/settings/Settings.java

diff --git a/alps/packages/apps/Settings/src/com/android/settings/Settings.java b/alps/packages/apps/Settings/src/com/android/settings/Settings.java
index 3508406..f423077 100644 (file)
--- a/alps/packages/apps/Settings/src/com/android/settings/Settings.java
+++ b/alps/packages/apps/Settings/src/com/android/settings/Settings.java
@@ -29,6 +29,7 @@ public class Settings extends SettingsActivity {
     * Settings subclasses for launching independently.
     */
     public static class BluetoothSettingsActivity extends SettingsActivity { /* empty */ }
+    public static class EthernetSettingsActivity extends SettingsActivity { /* empty */ }
     public static class WirelessSettingsActivity extends SettingsActivity { /* empty */ }
     public static class SimSettingsActivity extends SettingsActivity { /* empty */ }
     public static class TetherSettingsActivity extends SettingsActivity { /* empty */ }

17. packages/apps/Settings/src/com/android/settings/SettingsActivity.java

diff --git a/alps/packages/apps/Settings/src/com/android/settings/SettingsActivity.java b/alps/packages/apps/Settings/src/com/android/settings/SettingsActivity.java
index 9b82a5f..efa99a1 100644 (file)
--- a/alps/packages/apps/Settings/src/com/android/settings/SettingsActivity.java
+++ b/alps/packages/apps/Settings/src/com/android/settings/SettingsActivity.java
@@ -81,6 +81,7 @@ import com.android.settings.deviceinfo.PublicVolumeSettings;
 import com.android.settings.deviceinfo.SimStatus;
 import com.android.settings.deviceinfo.Status;
 import com.android.settings.deviceinfo.StorageSettings;
+import com.android.settings.ethernet.EthernetSettings;
 import com.android.settings.fuelgauge.BatterySaverSettings;
 import com.android.settings.fuelgauge.PowerUsageDetail;
 import com.android.settings.fuelgauge.PowerUsageSummary;
@@ -239,6 +240,7 @@ public class SettingsActivity extends SettingsDrawerActivity
             //wireless_section
             WifiSettingsActivity.class.getName(),
             Settings.BluetoothSettingsActivity.class.getName(),
+            Settings.EthernetSettingsActivity.class.getName(),
             Settings.DataUsageSummaryActivity.class.getName(),
             Settings.SimSettingsActivity.class.getName(),
             Settings.WirelessSettingsActivity.class.getName(),
@@ -278,6 +280,7 @@ public class SettingsActivity extends SettingsDrawerActivity
             AdvancedWifiSettings.class.getName(),
             SavedAccessPointsWifiSettings.class.getName(),
             BluetoothSettings.class.getName(),
+            EthernetSettings.class.getName(),
             SimSettings.class.getName(),
             TetherSettings.class.getName(),
             WifiP2pSettings.class.getName(),
@@ -1085,6 +1088,10 @@ public class SettingsActivity extends SettingsDrawerActivity
                 pm.hasSystemFeature(PackageManager.FEATURE_BLUETOOTH), isAdmin, pm);
 
         setTileEnabled(new ComponentName(packageName,
+                Settings.EthernetSettingsActivity.class.getName()),
+                pm.hasSystemFeature(PackageManager.FEATURE_ETHERNET), isAdmin, pm);
+
+        setTileEnabled(new ComponentName(packageName,
                 Settings.DataUsageSummaryActivity.class.getName()),
                 Utils.isBandwidthControlEnabled(), isAdmin, pm);

18. packages/apps/Settings/src/com/android/settings/ethernet/EthernetDialog.java

19. packages/apps/Settings/src/com/android/settings/ethernet/EthernetEnabler.java

20. packages/apps/Settings/src/com/android/settings/ethernet/EthernetSettings.java

21. packages/apps/Settings/src/com/android/settings/ethernet/ip/AbsEditText.java

22. packages/apps/Settings/src/com/android/settings/ethernet/ip/AbsEditTextGroup.java

23. packages/apps/Settings/src/com/android/settings/ethernet/ip/IPEditText.java

24. packages/apps/Settings/src/com/android/settings/ethernet/ip/IPView.java

标红文件见  Android 7.0 增加Ethernet设置(DHCP与Static ip)

感谢
http://blog.csdn.net/hclydao/article/details/50972932

https://github.com/lanyan520/Idea-EditText

Android 7.0 增加以太网设置DHCP和静态IP相关推荐

  1. 安卓Wifi设置DHCP以及静态IP

    静态IP参考:Android设置WIFI静态IP_lebulangzhen的博客-CSDN博客 DHCP代码如下: public static void setWifiDHCP() {try {Wif ...

  2. CentOS如何设置DHCP为静态IP地址

    一.CentOS 1.进入network-scripts查看ifcfg-ens33接口 2.打开配置文件:vi ifcfg-ens33 3.将BOOTPROTO=dhcp 改成 BOOTPROTO=s ...

  3. 动态IP(DHCP)、静态IP、拨号(PPPOE)三种上网设置区别

    动态IP(DHCP).静态IP.拨号(PPPOE)三种上网设置区别 一.动态IP(DHCP)  动态IP上网,又叫做DHCP上网.自动获取IP上网.动态IP这种上网方式,在未使用路由器的情况下,只需要 ...

  4. 无线dhcp服务器静态,wifi的ip设置dhcp和静态的区别

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. 以网络为例,wifi的ip设置dhcp和静态的区别如下: 1.静态IP地址(又称固定IP地址)是长期分配给一台计算机或网络设备使用 ...

  5. 启用 DHCP 和静态 IP 共存

    启用 DHCP 和静态 IP 共存 管理员方式执行 netsh int ipv4 set interface "以太网" dhcpstaticipcoexistence=enabl ...

  6. linux中修改静态ip后无法连接网络,我手机连接Wifi后有时候突然不能上网,我把设置中的静态iP改了才恢复,请教一下这是为什么?...

    我手机连接Wifi后有时候突然不能上网,我把设置中的静态iP改了才恢复,请教一下这是为什么?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶 ...

  7. 玩转虚拟机之VirtualBox设置虚拟机为静态IP并访问外网

    引言 大家好啊,关于虚拟机已经写了好几篇文章了,以下是往期文章,对你学习本文会有所帮助. <推荐一个免费好用的虚拟机软件> <玩转虚拟机之 VritualBox 安装 CentOS ...

  8. 如何设置主机电脑静态IP地址

    如何设置主机电脑静态IP地址 注意:请在完成环境搭建后设置主机的静态IP(方便以后重新开启虚拟机时进行操作),不要在没有完成环境搭建时设置静态IP !!!因为虚拟机node结点在进行环境搭建的时候,需 ...

  9. Android KK(4.4) 以太网和DHCP启动过程介绍

    Android KK(4.4) 以太网和DHCP启动过程介绍 1. ethernet启动流程 2. DHCP启动过程 2.1 JNI层接口 2.2 DHCP客户端(libnetutils) 2.3 D ...

最新文章

  1. 【camera】基于深度学习的车牌检测与识别系统实现(课程设计)
  2. 简单探讨JavaScript 与 TypeScript之间的联系
  3. 计算机软硬件基础体系标准,国内首个计算机软硬件基础体系标准发布
  4. nginx mysql 安装_CentOS7下安装Nginx+MySQL教程
  5. ndroid网络(4):HttpClient必经之路----使用线程安全的单例模式HttpClient,及HttpClient和Application的融合...
  6. 20165115 第二周学习总结
  7. php变量的数据类型
  8. python 正则表达式 sub_python 正则表达式 re.sub re.subn
  9. 控制QLineEdit的输入范围
  10. 读取CSV文件并将值存储到数组中
  11. Ajax+Java实现大文件切割上传
  12. 后端-SpringBoot MySql 连接语句
  13. DirectX 学习经典参考书籍 电子书下载
  14. 10个超实用的微信小程序 | 值得推荐的微信小程序
  15. 计算机基础知识表格斜线,word表格斜线,教您word表格添加斜线的方法
  16. Vue2项目引入mars3d
  17. Datawhale打卡活动 Kaggle Spaceship Titanic Day3
  18. lzma java sdk,如何使用LZMA SDK在Java中压缩/解压缩
  19. PXE的原理与配置方式
  20. Webview相关属性和事件处理

热门文章

  1. jdbc url的配置
  2. 前端项目怎么加入好看的图标?
  3. 你的软路由还只是软路由么(当软路由遇上点心云~)
  4. CSR、GPR、FPR
  5. C#面向对象的UML工具:StarUML介绍和入门使用
  6. 仿网易云网页版音乐播放器,实现歌词随歌曲进行滚动高亮
  7. Apache Mina
  8. Python基础知识汇总和应用示例
  9. //电话号码中间4位隐藏
  10. Day109.尚医通:集成Nacos、翻译字段、医院列表分页条件、下拉列表查询、医院状态、医院详情