版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u013463707/article/details/100516834
修改frameworks/opt/net/ethernet/java/com/android/server/ethernet/EthernetConfigStore.java文件
下面是修改好的文件源码,不影响用户自行配置,仅修改未配置IP情况下默认使用静态IP
/*
* Copyright (C) 2014 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.server.ethernet;
import android.net.IpConfiguration;
import android.net.IpConfiguration.IpAssignment;
import android.net.IpConfiguration.ProxySettings;
import android.os.Environment;
import android.util.Log;
import android.util.SparseArray;
import com.android.server.net.IpConfigStore;
import java.net.InetAddress;//add by lvjiong
import android.net.NetworkUtils;
import android.net.LinkAddress;
import android.net.StaticIpConfiguration;
/**
* This class provides an API to store and manage Ethernet network configuration.
*/
public class EthernetConfigStore extends IpConfigStore {
private static final String TAG = "EthernetConfigStore";
private static final String ipConfigFile = Environment.getDataDirectory() +
"/misc/ethernet/ipconfig.txt";
public EthernetConfigStore() {
}
public IpConfiguration readIpAndProxyConfigurations() {
SparseArray<IpConfiguration> networks = readIpAndProxyConfigurations(ipConfigFile);
if (networks.size() == 0) {
Log.w(TAG, "No Ethernet configuration found. Using default.");
/********add by lvjiong***********/
final InetAddress ADDRV4 = NetworkUtils.numericToInetAddress("10.131.0.112");
final InetAddress DNS1 = NetworkUtils.numericToInetAddress("10.128.142.149");
final InetAddress DNS2 = NetworkUtils.numericToInetAddress("172.16.13.105");
final InetAddress GATEWAY1 = NetworkUtils.numericToInetAddress("10.131.0.1");
final LinkAddress LINKADDRV4 = new LinkAddress(ADDRV4, 32);
StaticIpConfiguration staticIpConfig = new StaticIpConfiguration();
staticIpConfig.ipAddress = LINKADDRV4;
staticIpConfig.gateway = GATEWAY1;
staticIpConfig.dnsServers.add(DNS1);
staticIpConfig.dnsServers.add(DNS2);
return new IpConfiguration(IpAssignment.STATIC, ProxySettings.NONE, staticIpConfig, null);
//return new IpConfiguration(IpAssignment.DHCP, ProxySettings.NONE, null, null);
}
if (networks.size() > 1) {
// Currently we only support a single Ethernet interface.
Log.w(TAG, "Multiple Ethernet configurations detected. Only reading first one.");
}
return networks.valueAt(0);
}
public void writeIpAndProxyConfigurations(IpConfiguration config) {
SparseArray<IpConfiguration> networks = new SparseArray<IpConfiguration>();
networks.put(0, config);
writeIpAndProxyConfigurations(ipConfigFile, networks);
}
}
————————————————
版权声明:本文为CSDN博主「lvjiong353」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u013463707/article/details/100516834
更新问题:
上述预制后,子网掩码默认值是255.255.255.255 与客户要求不符
final LinkAddress LINKADDRV4 = new LinkAddress(ADDRV4, 32);
后发现是这段代码的问题,32 对应 255.255.255.255 24对应255.255.255.0 16对应 255.255.0.0
注:适用于8.1系统