Ich entwickle eine Anwendung, die über Wlan (die vom Gerät erzeugt wird) mit einem Hardwaregerät verbindet und über eine Socket-Verbindung Daten an dieses sendet. Das Problem ist, dass wenn mobile Daten (3G / 4G) aktiviert ist Android versucht, die Daten durch sie zu senden, anstatt es durch das WiFi vom Gerät erzeugt zu senden, weil das WiFi keine Internetverbindung hat. Ich dachte daran, ConnectivityManager # setNetworkPreference () Aber es wurde in api 21 veraltet.
Wie kann ich einstellen, dass Daten über das WLAN gesendet werden, das vom Gerät anstelle der mobilen Datenschnittstelle generiert wird?
Nach vielen Recherchen und der Zeit, alles zu verstehen, habe ich herausgefunden, dass dies in Versionen vor Android 5.0 (Lollipop) nicht möglich ist, das Betriebssystem hält nur eine Netzwerkschnittstelle auf einmal und die Apps nicht ' Ich habe die Kontrolle darüber.
Um dies auf Versionen zu tun, die größer oder gleich dem Lollipop sind, habe ich Folgendes getan:
Falls die Version mit Lollipop gleich oder größer ist, müssen Sie Folgendes tun:
%Vor%Nachdem Sie fertig sind, sollten Sie aufhören, den Prozess mit diesem zu binden:
%Vor%Diese Antwort hat mir geholfen zu verstehen, wie man es macht Ссылка .
Das Netzwerk schaltet nach dem setProcessDefaultNetwork auf wifi zurück auf mobile Geräte. Sie können auf diese Weise keine großen Daten senden, da alle auf diese Weise erstellten Sockets nicht mehr funktionieren. Ich finde jetzt keinen perfekten Weg, hier nur als Referenz.
1.Wenn Sie Root-Zugriff erhalten können, tun Sie dies, bevor Sie eine Verbindung zum WLAN herstellen:
%Vor%Und löschen Sie es, nachdem Sie Daten gesendet haben:
%Vor%2.Wenn Sie WRITE_SECURE_SETTINGS Erlaubnis erhalten können:
%Vor%Oder:
%Vor%Tags und Links android sockets android-wifi android-networking network-interface