Die Lösung, die ich hier vorstellen werde, ist ein Hack mit Reflektion und funktioniert nur auf einem gerooteten Android-System.
Ihr Gerät verfügt möglicherweise über das beliebte android.net.ethernet-Paket. Versuchen Sie in einer Aktivität
Es gibt eine gültige Instanz des EthernetManager oder null zurück. Null bedeutet, dass Sie kein Glück haben.
Eine zusätzliche Anforderung hängt möglicherweise von Ihrem Gerät ab: Ethernet und WLAN funktionieren möglicherweise nur exklusiv. Möglicherweise müssen Sie Wifi deaktivieren, um Ethernet zu aktivieren und umgekehrt.
Um Ethernet über Reflektion zu aktivieren, verwenden Sie Ihre Instanz des EthernetManagers. Die Methode, die Sie aufrufen möchten ist setEthEnabled (boolean aktiviert)
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();
}
Ihre Anwendung manifestieren muss diese Berechtigungen
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
Die Erlaubnis WRITE_SECURE_SETTINGS nur durch System-Apps erworben werden können. Die App muss nicht mit einem Systemschlüssel signiert sein. Es kann ein beliebiges gültiges Zeichen sein (wie die normale Android App Export-Funktion). Verwenden Sie busybox, um die Systempartition für den Schreibzugriff neu zu mounten, und verschieben Sie Ihre apk in den Ordner/system/app. Starten Sie das Gerät neu und es sollte funktionieren.
Können wir programmatisch Ethernet verbinden?
Es gibt keinen Zugangspunkt, um Sie wie mit Wifi zu verbinden. Sie konfigurieren es entweder für DHCP oder stellen statische Werte bereit. Dies kann natürlich auch über Reflektion erfolgen. Sie benötigen dafür die Klasse EthernetDevInfo.
Die tatsächliche Implementierung von EthernetManager und EthernetDevInfo kann zwischen Android-Versionen und -Geräten leicht abweichen, da sie (noch) keiner öffentlichen API entsprechen muss und möglicherweise sogar eine benutzerdefinierte Version ist. Um eine Liste der Getter und Setter zu erhalten, können Sie eine Introspector oder Reflexion im Allgemeinen verwenden.
Haben Sie es geschafft? Ich bin vor es auch – Manmohan
Nein, leider nicht :(... sorry – MTurPash
Pech von mir .. gleiche wie du .. wird hier aktualisiert, wenn etwas Nützliches – Manmohan