网上最多的参考就是 https://www.yuque.com/huangxiaowei-2hqfi/zzlhpw/zusfgr
但是这两种方法并不可行,经过查看系统源码发现,需要调用如下方法
public void setEthernet2(boolean isopen) {
Class<?> emClass = null;
try {
emClass = Class.forName("android.net.EthernetManager");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Object emInstance = getSystemService("ethernet");
Method methodSetEthEnabled = null;
Log.d(TAG, "setEthernet2:emInstance: " + emInstance);
try {
methodSetEthEnabled = emClass.getMethod("setEthernetEnabled", Boolean.TYPE);
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
methodSetEthEnabled.setAccessible(true);
try {
Boolean state = (Boolean) methodSetEthEnabled.invoke(emInstance, new Boolean(isopen));
Log.d(TAG, "setEthernet2: state:" + state);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
同时需要系统签名之后才能正常开启,网上查找如何签名
在mannifest中,添加
android:sharedUserId="android.uid.system"
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CONNECTIVITY_INTERNAL"/>
另外如果需要监听以太网,注册广播监听,广播接受者的过滤器如下:
new IntentFilter("android.net.ethernet.ETHERNET_STATE_CHANGED")
|