android 以太网编程,通过编程方式实现以太网连接(Android)(Root设备)

我有一个关于以太网的小问题.

我的三个问题是:

>我们可以通过编程方式打开/关闭以太网吗?

>我们可以编程启用/禁用以太网吗?

>我们能以编程方式连接以太网吗?

以上问题是通过Wifi完成的.喜欢

>我们可以通过编程方式开启/关闭Wifi.

>我们可以通过编程方式启用/禁用Wifi.

>我们可以使用WifiManager以编程方式连接Wifi.

android是否提供任何EthernetManager,如WifiManager来处理以太网?

或者,如果这似乎不可行,那么我原来的要求是:

我要澄清的第一件事是“设备已经生根”.

我可以操作设置(默认)吗?就像我不希望除了WIFI和以太网之外的Settings.apk中的任何其他选项.它应该只显示Wifi和以太网.而已.我可以从“设置”中禁用所有选项,还是可以从“设置”中删除所有其他选项?

解决方法:

我将在这里介绍的解决方案是使用反射的hack,并且只适用于root系统.

您的设备可能有流行的android.net.ethernet包.在活动中,试试

Object emInstance = getSystemService("ethernet");

它返回EthernetManager的有效实例或null. Null意味着你运气不好.

另外一项要求可能取决于您的设备:以太网和Wifi可能仅适用于您的设备.您可能需要禁用Wifi以启用以太网,反之亦然.

要通过反射启用以太网,请使用EthernetManager的实例.

要调用的方法是setEthEnabled(启用布尔值)

Class> emClass = null;

try {

emClass = Class.forName("android.net.ethernet.EthernetManager");

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

Object emInstance = getSystemService("ethernet");

Method methodSetEthEnabled = null;

try {

methodSetEthEnabled = emClass.getMethod("setEthEnabled", Boolean.TYPE);

} catch (NoSuchMethodException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

methodSetEthEnabled.setAccessible(true);

try {

// new Boolean(true) to enable, new Boolean(false) to disable

methodSetEthEnabled.invoke(emInstance, new Boolean(false));

} catch (IllegalArgumentException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IllegalAccessException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (InvocationTargetException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

您的应用程序清单需要这些权限

WRITE_SECURE_SETTINGS权限只能由系统应用获取.该应用程序不需要由系统密钥签名.它可以是任何有效的标志(如常规的Android App Export功能).使用busybox重新安装系统分区以进行写访问,并将apk移至/ system / app文件夹.重新启动设备,它应该工作.

Can we programmatically Connect Ethernet ?

没有接入点可以与Wifi连接.您可以将其配置为DHCP或提供静态值.这当然也可以通过反射来完成.

您将需要EthernetDevInfo类.

以太网管理器和EthernetDevInfo的实际实现可能在Android版本和设备之间略有不同,因为它不必符合公共API(还),甚至可能是自定义版本.

要获取getter和setter列表,您可以使用Introspector或反射.

标签:android-networking,android,ethernet

来源: https://codeday.me/bug/20190928/1827413.html

你可能感兴趣的:(android,以太网编程)