精华内容
下载资源
问答
  • Android 9.0 以太网静态IP设置

    千次阅读 2020-09-11 10:42:15
    吐槽一下,官方貌似没有以太网和WiFi的配置流程,网络设置这部分主要借鉴的是Settings中的内容 以太网配置需要使用EthernetManager类,我们看下这个类的特点: /** * A class representing the IP configuration ...

    吐槽一下,官方貌似没有以太网和WiFi的配置流程,网络设置这部分主要借鉴的是Settings中的内容

    以太网配置需要使用EthernetManager类,我们看下这个类的特点:

    /**
     * A class representing the IP configuration of the Ethernet network.
     *
     * @hide
     */
    @SystemApi
    @TestApi
    @SystemService(Context.ETHERNET_SERVICE)
    public class EthernetManager
    

    这个类对普通应用并不开放,需要一些特别的权限

    环境准备工作

    1. 进行静态网络设置需要先把app配置为系统级
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.xxxx.xxxx"
        android:sharedUserId="android.uid.system">
    
    1. 由于使用到了EthernetManager类,这个类Android定义为隐藏的,所以我们需要依赖一个framework.jar
    compileOnly files('frameworks.jar')
    

    compileOnly即可

    • 此时在AS中还是会显示找不到EthernetManager
    • AS管理的每个module中有一个.yml文件
    • .yml文件中的framework.jar的顺序放到最前面就可以了

    像这样

        <orderEntry type="sourceFolder" forTests="false" />
        <orderEntry type="library" name="Gradle: ./../../fm-libs/ironman_frameworks.jar" level="project" />
        //......
        <orderEntry type="module" module-name="factory_test_interf" />
        <orderEntry type="jdk" jdkName="Android API 29 Platform" jdkType="Android SDK" />
    

    这样,AS就会优先查找framework.jar中的类。

    如果启动编译,应该还会出现找不到类的情况,此时我们还需要在Projectbuild.gradle中进行如下配置:

    allprojects {
        repositories {
            //......
        }
        gradle.projectsEvaluated {
            tasks.withType(JavaCompile) {
                //......
                options.compilerArgs.add('-Xbootclasspath/p:/Users/lijie/fm-libs/frameworks.jar')
            }
        }
    }
    

    这样编译时应该就会查找framework.jar中的类了

    代码开始

    1. 一个接口类NetworkConfiguration,从Settings中借鉴过来的。
    import android.net.IpConfiguration;
    import android.net.wifi.WifiManager;
    /**
     * Provide unified interface for network configuration that works for both Wi-Fi and Ethernet.
     */
    public interface NetworkConfiguration {
        /**
         * Set IpConfiguration
         *
         * @param configuration IpConfiguration to set
         */
        public void setIpConfiguration(IpConfiguration configuration);
        /**
         * Get IpConfiguration
         *
         * @return IpConfiguration
         */
        public IpConfiguration getIpConfiguration();
        /**
         * Save current network configuration to system
         *
         * @param listener listener to notify the result
         */
        public void save(WifiManager.ActionListener listener);
        /**
         * Get printable name for this network.
         *
         * @return Printable name
         */
        public String getPrintableName();
    }
    
    1. 以太网配置实现类EthernetConfig,实现了NetworkConfiguration接口
    import android.content.Context;
    import android.net.EthernetManager;
    import android.net.IpConfiguration;
    import android.net.wifi.WifiManager;
    import android.os.Looper;
    /**
     * Ethernet configuration that implements NetworkConfiguration.
     */
    class EthernetConfig implements NetworkConfiguration {
        private EthernetManager mEthernetManager;
        private IpConfiguration mIpConfiguration;
        private String mName;
        private String mInterfaceName;
        EthernetConfig(Context context) {
            if (Thread.currentThread().getId() != context.getMainLooper().getThread().getId()) {
                // 由于 EthernetManager 在初始化的时候会启动一个Handler
                // 如果不是在主线程中,并且没有调用Looper.prepare(),会出现异常
                if (Looper.myLooper() == null) {
                    Looper.prepare();
                }
            }
            mEthernetManager = (EthernetManager) context.getSystemService(Context.ETHERNET_SERVICE);
            mIpConfiguration = new IpConfiguration();
            mName = "Ethernet";
        }
        @Override
        public IpConfiguration getIpConfiguration() {
            return mIpConfiguration;
        }
        @Override
        public void setIpConfiguration(IpConfiguration configuration) {
            mIpConfiguration = configuration;
        }
        @Override
        public void save(WifiManager.ActionListener listener) {
            if (mInterfaceName != null) {
                mEthernetManager.setConfiguration(mInterfaceName, mIpConfiguration);
            }
    
            if (listener != null) {
                listener.onSuccess();
            }
        }
        /**
         * Load IpConfiguration from system.
         */
        public void load() {
            String[] ifaces = mEthernetManager.getAvailableInterfaces();
            if (ifaces.length > 0) {
                mInterfaceName = ifaces[0];
                mIpConfiguration = mEthernetManager.getConfiguration(mInterfaceName);
            }
        }
    
        @Override
        public String getPrintableName() {
            return mName;
        }
    }
    
    1. 配置流程工具类EthernetUtils,注释很详细了哈
    import android.content.Context;
    import android.net.IpConfiguration;
    import android.net.LinkAddress;
    import android.net.StaticIpConfiguration;
    import android.net.wifi.WifiManager;
    import android.text.TextUtils;
    import android.util.Log;
    
    import java.net.Inet4Address;
    import java.util.concurrent.CountDownLatch;
    
    import static com.fengmi.factory_test_interf.sdk_utils.NetworkUtil.netMask2Length;
    
    public final class EthernetUtils {
        private static final String TAG = "EthernetUtils";
        private static volatile boolean res = false;
        private EthernetUtils() {
        }
        /**
         * 设置 IP 获取方式为 DHCP 动态分配
         *
         * @param context 上下文对象
         * @return 配置是否保存成功
         */
        public static boolean saveDHCPEthernetConfig(Context context) {
            res = false;
            //1. 创建一个EthernetConfig对象
            EthernetConfig netConfig = new EthernetConfig(context);
            //2. load 加载系统配置到对象中
            netConfig.load();
            //3. 设置IP获取方式为 DHCP
            netConfig.getIpConfiguration().setIpAssignment(IpConfiguration.IpAssignment.DHCP);
            //4. 设置一个等待latch
            CountDownLatch latch = new CountDownLatch(1);
            //5. 保存配置到系统,并监听是否设置成功
            netConfig.save(new WifiManager.ActionListener() {
                @Override
                public void onSuccess() {
                    Log.d(TAG, "set IP assignment DHCP success");
                    res = true;
                    latch.countDown();
                }
    
                @Override
                public void onFailure(int i) {
                    Log.d(TAG, "set IP assignment DHCP failed, code=" + i);
                    res = false;
                    latch.countDown();
                }
            });
    
            try {
                latch.await();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return res;
        }
        /**
         * 设置以太网静态IP<p/>
         * 网上都没能找到正规的流程说明,从Settings中借鉴来的代码<p/>
         * 人性化的我添加了注释,吼吼吼<p/>
         * 网络配置相关的科普链接{https://blog.51cto.com/zhoutao/93629}
         *
         * @param context   上下文
         * @param ipAddress ip 地址,格式为:10.10.10.10
         * @param netMask   子网掩码,格式为:255.255.255.0
         * @param gateway   默认网关,格式为:10.10.10.1
         * @param dns       dns服务地址,google 提供了两个免费的
         * @return 配置是否成功
         */
        public static boolean saveStaticEthernetConfig(Context context,
                                                       String ipAddress,
                                                       String netMask,
                                                       String gateway,
                                                       String dns) {
            res = false;
            // 创建一个 StaticIpConfiguration 对象,用来保存静态IP相关的信息
            StaticIpConfiguration staticConfig = new StaticIpConfiguration();
            // 创建一个EthernetConfig对象
            EthernetConfig netConfig = new EthernetConfig(context);
            // load 加载系统配置到对象中
            netConfig.load();
            // 关联配置信息对象
            netConfig.getIpConfiguration().setStaticIpConfiguration(staticConfig);
    
            // 针对 IP地址 做一些异常判断
            if (TextUtils.isEmpty(ipAddress)) {
                Log.i(TAG, "empty ipv4 addr");
                return false;
            }
    
            // 根据子网掩码计算Prefix Length,看看究竟掩护了多少位
            // 其实就是计算子网掩码比特位为1的位数。
            int networkPrefixLength;
            try {
                networkPrefixLength = netMask2Length(netMask);
            } catch (Exception e) {
                e.printStackTrace();
                return false;
            }
    
            //根据 IP 和 子网掩码的Prefix Length信息 生成 ipAddress 对象
            Inet4Address inetAddr;
            try {
                // 将IP 转化为 Inet4Address 对象
                inetAddr = (Inet4Address) android.net.NetworkUtils.numericToInetAddress(ipAddress);
                // 将 `Inet4Address 对象` 和 `子网掩码的Prefix Length信息` 打包成LinkAddress对象
                // 赋值给 StaticIpConfiguration 对象中的 ipAddress
                staticConfig.ipAddress = new LinkAddress(inetAddr, networkPrefixLength);
            } catch (IllegalArgumentException | ClassCastException e) {
                e.printStackTrace();
                return false;
            }
    
            // 将网关信息设置给 StaticIpConfiguration 对象中的 gateway
            if (!TextUtils.isEmpty(gateway)) {
                try {
                    staticConfig.gateway =
                            android.net.NetworkUtils.numericToInetAddress(gateway);
                } catch (IllegalArgumentException | ClassCastException e) {
                    e.printStackTrace();
                    return false;
                }
            }
    
            //将 dns 添加到 StaticIpConfiguration 对象的 DNS 服务列表中
            if (!TextUtils.isEmpty(dns)) {
                try {
                    staticConfig.dnsServers.add(
                            android.net.NetworkUtils.numericToInetAddress(dns));
                } catch (IllegalArgumentException | ClassCastException e) {
                    e.printStackTrace();
                    return false;
                }
            }
    
            // 添加两个Google提供的免费DNS服务器的IP地址
            try {
                staticConfig.dnsServers.add(
                        android.net.NetworkUtils.numericToInetAddress("8.8.8.8"));
                staticConfig.dnsServers.add(
                        android.net.NetworkUtils.numericToInetAddress("8.8.4.4"));
            } catch (IllegalArgumentException | ClassCastException e) {
                e.printStackTrace();
                return false;
            }
    
            // 设置 IpAssignment 为 Static 模式
            netConfig.getIpConfiguration().setIpAssignment(IpConfiguration.IpAssignment.STATIC);
            // 设置一个等待latch
            CountDownLatch latch = new CountDownLatch(1);
            // 保存配置信息到系统,并监听设置结果
            netConfig.save(new WifiManager.ActionListener() {
                @Override
                public void onSuccess() {
                    Log.d(TAG, "set static IP assignment success");
                    res = true;
                    latch.countDown();
                }
    
                @Override
                public void onFailure(int i) {
                    Log.d(TAG, "set static IP assignment failed, code=" + i);
                    res = false;
                    latch.countDown();
                }
            });
    
            try {
                latch.await();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return res;
        }
        /**
         * 计算子网掩码的 Prefix Length
         *
         * @param netMask 子网掩码
         * @return Prefix Length
         */
        private static int netMask2Length(String netMask) {
            byte[] array = netMask2ByteArray(netMask);
            if (array == null) {
                return -1;
            }
            int i = array[0] << 24 | array[1] << 16 | array[2] << 8 | array[3];
            int j = 32;
            int k = 1;
            while (((i & k) == 0) && (k != 0)) {
                k <<= 1;
                j--;
            }
            return j;
        }
        /**
         * 将子网掩码转化为字节数组
         *
         * @param str 子网掩码
         * @return 字符数组,格式不正确返回null
         */
        private static byte[] netMask2ByteArray(String str) {
            if (str == null || str.length() == 0) {
                return null;
            }
            StringTokenizer tokenizer = new StringTokenizer(str, ".");
            if (tokenizer.countTokens() != 4) {
                return null;
            }
            byte[] arrayOfByte = new byte[4];
            for (int i = 0; tokenizer.hasMoreTokens(); i++) {
                int j = Integer.parseInt(tokenizer.nextToken());
                arrayOfByte[i] = (byte) j;
            }
            return arrayOfByte;
        }
    }
    
    

    总结

    想要完成这个功能

    • EthernetManager这种隐藏类的导入上需要费些时间
    • 熟悉网络配置相关的名词需要些时间
      • IP 地址
      • 子网掩码
      • 默认网关
      • dns
    • 熟悉配置流程需要些时间
      • 首先加载系统网络配置
      • 然后设置对应的网络参数
      • 然后设置不同的类型
        • DHCP
        • STATIC
      • 最后保存配置

    实测可用,WiFi的实现和这个流程也差不多,功能虽然已经完成,但是在流程上还有些疑惑,就不先贴出来了,嘻嘻!

    展开全文
  • EthernetManager Android 以太网静态IP设置

    万次阅读 热门讨论 2016-08-01 12:37:59
    关于以太网设置由于公司的需求,需要在项目中加入设置以太网静态IP的功能,在网上找了一下,发 现这方面的资料比较少最后只找到了一个demo,但是导入后发现项目报错.之后查了一下资料才发现原来EthernetManager是谷歌...

    关于以太网设置

    由于公司的需求,需要在项目中加入设置以太网静态IP的功能,在网上找了一下,发 现这方面的资料比较少最后只找到了一个demo,但是导入后发现项目报错.

    之后查了一下资料才发现原来EthernetManager是谷歌隐藏的API,关于隐藏API的调用,可以去看下下面这篇文章:
    如何调用Android隐藏API


    废话不多说先上代码

        // 监听以太网状态的广播,包括网线插拔和以太网开关
        private IntentFilter mIntentFilter;
        private final BroadcastReceiver mReceiver = new BroadcastReceiver(){
            @Override
            public void onReceive(Context context, Intent intent){
                String action = intent.getAction();
                    // 当以太网状态改变
                if (action.equals(EthernetDataTracker.ETHERNET_STATE_CHANGED_ACTION)){
                        // 取得当前以太网状态
                        int state = intent.getIntExtra(EthernetDataTracker.EXTRA_ETHERNET_STATE, 0);
                        // 根据当前以太网状态取得信息
                        switch (state) {
                        case EthernetDataTracker.ETHER_STATE_CONNECTED: //已连接
    //                      Utils.showToast(context, "Ethernet以连接----"+isEthernet);
                            if (isEthernet) { //防止接收到广播后直接跳转了
                                pdb.dismiss();
                                isNetworkAvailable(context);
                            }
                            break;
    
                        case EthernetDataTracker.ETHER_STATE_DISCONNECTED: //未连接
    //                      Utils.showToast(context, "Ethernet未连接");
    //                      isEthernet = false;
                            break;
                        }
                        getEthInfo(state); //根据以太网状态取得以太网信息
                    }
                }
        };

    上面的代码有些项目中自己封装的方法,不要太在意.以太网的状态主要分为静态IP,和动态IP的,下面的方法主要是根据不同的状态来获取以太网的信息的.

    public void getEthInfo(int state){
            if (state == EthernetDataTracker.ETHER_STATE_DISCONNECTED{
                // 如果以太网未连接
            } else{
                ContentResolver contentResolver = context.getContentResolver();
                // 是否使用静态IP
                int useStaticIp = System.getInt(contentResolver,
                        System.ETHERNET_USE_STATIC_IP, 0);
    
    
                if (useStaticIp == 1){    // 如果是静态的
                // 取得静态IP
                mEthIpAddress = System.getString(contentResolver,
                        System.ETHERNET_STATIC_IP);
    
                // 取得静态子网掩码
                mEthNetmask = System.getString(contentResolver,
                        System.ETHERNET_STATIC_NETMASK);
                // 取得静态网关
                mEthGateway = System.getString(contentResolver,
                        System.ETHERNET_STATIC_GATEWAY);
    
                // 以下两种方式均可取得dns
                // 取得dns1
                mEthdns1 = System.getString(contentResolver,
                        System.ETHERNET_STATIC_DNS1);
    
                // 取得dns2
                mEthdns2 = System.getString(contentResolver,
                        System.ETHERNET_STATIC_DNS2);
    
                } else{
    
                    String tempIpInfo;
                String iface = mEthManager.getEthernetIfaceName();
    
                // 取得动态IP地址
                tempIpInfo = SystemProperties.get("dhcp." + iface + ".ipaddress");
                if ((tempIpInfo != null) && (!tempIpInfo.equals(""))){
                    mEthIpAddress = tempIpInfo;
                } else{
                    mEthIpAddress = "";
                }
    
                // 取得动态子网掩码
                tempIpInfo = SystemProperties.get("dhcp." + iface + ".mask");
                if ((tempIpInfo != null) && (!tempIpInfo.equals(""))){
                    mEthNetmask = tempIpInfo;
                } else{
                    mEthNetmask = "";
                }
    
                // 取得动态网关
                tempIpInfo = SystemProperties.get("dhcp." + iface + ".gateway");
                if ((tempIpInfo != null) && (!tempIpInfo.equals(""))){
                    mEthGateway = tempIpInfo;
                } else{
                    mEthGateway = "";
                }
    
                // 取得动态dns1
                tempIpInfo = SystemProperties.get("dhcp." + iface + ".dns1");
                if ((tempIpInfo != null) && (!tempIpInfo.equals(""))){
                    mEthdns1 = tempIpInfo;
                } else{
                    mEthdns1 = "";
                }
    
                // 取得动态dns2
                tempIpInfo = SystemProperties.get("dhcp." + iface + ".dns2");
                if ((tempIpInfo != null) && (!tempIpInfo.equals(""))){
                    mEthdns2 = tempIpInfo;
                } else{
                    mEthdns2 = "";
                }
            }
        }
    }

    获取到信息之后接下来就是设置静态IP了

    // 方便取出相关的信息,数组里索引从小打大对应的意思见名知意
    private String[] mSettingNames = { System.ETHERNET_STATIC_IP,
                System.ETHERNET_STATIC_GATEWAY, System.ETHERNET_STATIC_NETMASK,
                System.ETHERNET_STATIC_DNS1, System.ETHERNET_STATIC_DNS2 };
    /*
    设置静态IP的方法,
    */
    System.putString(contentResolver, mSettingNames[i], text);
    
    // 保存 "是否使用静态 IP" 的配置
    System.putInt(contentResolver, System.ETHERNET_USE_STATIC_IP, 1);

    当然了这还不算完,有一点比较坑的地方就是,你必须要保证你输入的IP值是正确的IP格式,比如你要是输入个1或者其他不符合IP地址格式的值那么悲剧很可能就要发生了,你的系统很可能就会变砖了
    下面附上有效IP地址的判断:

        /**
         * 返回 指定的 String 是否是 有效的 IP 地址.
         */
        public static boolean isValidIpAddress(String value) {
    
            int start = 0;
            int end = value.indexOf('.');
            int num = 0;
    
            while (start < value.length()) {
    
                if (-1 == end) {
                    end = value.length();
                }
    
                try {
                    int block = Integer.parseInt(value.substring(start, end));
                    if ((block > 255) || (block < 0)) {
                        return false;
                    }
                } catch (NumberFormatException e) {
                    return false;
                }
    
                num++;
    
                start = end + 1;
                end = value.indexOf('.', start);
            }
    
            return num == 4;
        }
    

    注意:一定要判断是否是有效的IP地址,还有设置完IP地址后重启下以太网才会生效
    mEthManager.setEthernetEnabled(true); // 开启以太网

    最后说下权限问题

    <!-- android:sharedUserId="android.uid.system" 使其成为系统应用-->
    使用这个权限需要系统对应的三个文件:
    signapk.jar
    platform.x509.pem 
    platform.pk8
    
    并在cmd中用以下命令签名
    java -jar signapk.jar platform.x509.pem platform.pk8  pubwin_box_v1.1.apk  pubwin_box_v1.1_signed.apk

    以太网需要使用的jar包下载

    展开全文
  • android设置以太网ip

    千次阅读 2015-09-14 13:25:59
    android设备上有个网口,需求用app去设置这网口的ip;搞了好几天啊。。。 网上有几个帖子说用Ethernet,搞了半天也不知道到底哪里有问题,反正这个我是没有测试成功; 后来用的ifconfig命令去控制ip;但是这个方法...

    android设备上有个网口,需求用app去设置这网口的ip;搞了好几天啊。。。
    网上有几个帖子说用Ethernet,搞了半天也不知道到底哪里有问题,反正这个我是没有测试成功;
    后来用的ifconfig命令去控制ip;但是这个方法的缺陷是设备重启后,ip恢复到设置前的状态。。。

    private void shella(){
            String com="ifconfig eth0 192.168.2.210 netmask 255.255.255.0";
    
             try{
                 Process suProcess = Runtime.getRuntime().exec("su");//root权限
                DataOutputStream os = new DataOutputStream(suProcess.getOutputStream());
                // Execute commands that require root access
                os.writeBytes(com+ "\n");
                os.flush();
                os.writeBytes("exit\n");
                os.flush();
                 }catch (IOException e) {
                            e.printStackTrace();
                        } catch (Exception e) {
                            e.printStackTrace();
                        } 
    
        }
    
    展开全文
  • 由于设置以太网需要调用一些隐藏API,有两种方法可以实现: 1、反射 2、添加JAR包,把APP设置为系统APP。 作者参考一些网上资料,使用上面第2种方法实现。 参考网址:https://www.jianshu.com/p/e1191c41d70a 里内有...

    由于设置以太网需要调用一些隐藏API,有两种方法可以实现:
    1、反射
    2、添加JAR包,把APP设置为系统APP。

    作者参考一些网上资料,使用上面第2种方法实现。
    参考网址:https://www.jianshu.com/p/e1191c41d70a
    里内有代码。

    这里只提在实现过程中遇到的坑,供大家看看:
    1.系统签名文件不对,导致一直不能下载到板子上运行。
    2.IP地址没做格式检测,APP崩溃
    3.上面代码运行后发现一个奇怪问题,如果以太网口插上网线,串口终端用ifconfig看到正确IP;如果没插上网线,配置的IP不能立即更新,但是插上网线后IP能够更新过来。这个问题还在解决,猜测解决方法是配置IP后应该重启一下网卡。解决后我再更新解决方法。

    展开全文
  • Android9.0目前网络上没有关于以太网静态IP设置功能的资料,求大神有空做一下提供一下补丁。基于Android9.0源码。。。目前能重写IP了,就是重写IP后无法联网。重写以太网静态IP的补丁如下:[Ethernet Setting]...
  • 设置wlan 和以太网 ip 的bat 脚本 name 名字需要与网络连接名称对应 netsh interface ip set address name="WLAN" source=static addr=192.168.55.23 mask=255.255.255.0 gateway=192.168.55.254 1 netsh ...
  • 安卓9.0设置以太网静态IP地址

    千次阅读 热门讨论 2019-08-14 19:41:37
    前言:因为项目需要设置安卓9.0系统的以太网静态ip地址,于是网上搜索相关资料。9.0系统以太网设置静态ip有关的,只有Github上有个MTK开发人员的分享,github链接:...
  • 在做机顶盒项目的时候,有个需求是这样的: ...3、如果是动态IP,可以设置成静态的,然后设置静态IP、网关等信息。 项目完成后,就把以太网相关的抽出来了,现在放出来,顺便记录记录! apk需要放置到/
  • PPP IP 、以太网IP及无线局域网IP分析

    千次阅读 2018-04-11 11:28:16
    发现不止一个IPV4地址,有PPP适配器的IP、无线局域网适配器WLAN的IP以太网适配器的IP…这些IP的区别是什么呢 PPP PPP(Point to Point Protocol)点对点协议: 它是用于串行接口的两台计算机的通信协议,是...
  • C# 修改本地以太网ip地址

    千次阅读 2019-10-14 12:56:23
    因为某项需求,要修改以太网的ip地址,研究了一段时间,因不太懂网络的知识,只实现了最基本的修改以太网ip的功能。如果有错误,欢迎指出 等价于在这里修改: 实现代码: //设置ip地址 private void ...
  • 在添加以太网后,可以顺利设置静态ip.但是当我设置静态后,出现需要将网线拔插一次更新网络后才能刷新ip地址的bug。当时以为只要像7.0和8.0那样新增就没有问题了,没想到这次9.0又改变了代码结构。下面我将详细介绍...
  • 然后在系统设置页面有个以太网菜单可以进行IP、网关等设置,如下: 二、那怎么通过代码去设置呢? 1、Android系统在Framework层是有提供操作以太网Api的也就是android.net.EthernetManager,但是Google把Api给隐藏...
  • android 以太网设置静态ip

    千次阅读 2018-04-26 09:01:01
    先是查到了以下的方法,发现是设置Wi-Fi的。 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ContentResolver cr = this....
  • Android6.0修改以太网IP

    千次阅读 2017-07-19 08:02:44
    不罗嗦切入正题,实现以太网IP修改主要分为以下步骤: 一.拿到系统的Framework源码,也就是jar包 我的jar是底层开发的同事给我的,导入到项目中,导入方式可参考这个帖子: http://www.j
  • xilinx千兆以太网与万兆以太网IP接口

    万次阅读 2016-02-15 16:43:08
    说明:对于IP核输出数据的解析最好的工具就是其自带的仿真文件,里面既将接收的数据进行了解析,又将发送给IP核的数据进行了封装,这对于了解数据结构和协议是十分有帮助的,以太网如此,pcie、ram、fifo等其它IP也...
  • 在做android设备时候有设置设备的静态IP,因为这个方法是系统隐藏方法,而且还是9.0的系统目前测试...原博客:安卓9.0设置以太网静态IP地址 博客来源地址:https://blog.csdn.net/zzhceo/article/details/99596435 ...
  • 这个问题可以说困扰了我很久,百度上当然有大神...修改以太网IP需要以EthernetManager为代表的几个以太网配置类 当然直接进行开发这几个类是没有的,这是Android隐藏API,何以见得 都被标记为了hide,这里肯定不要
  • Android 7.0 自带EthernetService,默认开机就会启动,默认ip获取方式是动态分配(DHCP),有时候公司路由器DNS设置有问题,导致无法上网(能ping通局域网,无法上外网),手动设置静态IP就派上用场了。 废话不多说...
  • 修改以太网ip的方法

    千次阅读 2013-07-05 16:24:44
    今天说下修改以太网ip的方法,方便大家也方便自己以后查询。关键代码 ConnectivityManager mService = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);  EthernetManager mEthManager = ...
  • android设备插网线的时候 , 如何获取以太网IP
  • 以太网 IP TCP UDP 头部

    千次阅读 2017-11-03 15:37:39
    以太网头部结构 1、目的地址/源地址:目的主机或源主机的MAC地址 2、类型: 0800:IP数据报 0806:ARP请求 3、数据: 不足46字节的数据会被补足到46字节再发送。 4、内核数据结构 #define ETH_ALEN 6 struct ...
  • kc705 万兆以太网 ip 用法

    千次阅读 2019-01-12 23:01:37
    本人在kc705板上使用过万兆IP核,使用的软件工具是vivado2018.2.万兆ip核是“10g ethernet pcs/pma (10g base-r/kr )”.选择64位用户数据。测试过程是用一块板子作为数据的发送,另一块板子作回环。发送数据模块是...
  • 请问quartus软件的三速以太网IP核是收费的吗?请问quartus软件的三速以太网IP核是收费的吗?

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 118,795
精华内容 47,518
关键字:

以太网ip怎么设置