Wie zu aktivieren/deaktivieren wifi hotspot programmgesteuert in Android 8.0 (Oreo)
Ich weiß, wie turn on/off wifi hot spot mit der spiegelung in android mit folgenden Verfahren.
private static boolean changeWifiHotspotState(Context context,boolean enable) {
try {
WifiManager manager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
Method method = manager.getClass().getDeclaredMethod("setWifiApEnabled", WifiConfiguration.class,
Boolean.TYPE);
method.setAccessible(true);
WifiConfiguration configuration = enable ? getWifiApConfiguration(manager) : null;
boolean isSuccess = (Boolean) method.invoke(manager, configuration, enable);
return isSuccess;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
Aber die oben genannte Methode funktioniert nicht Android 8.0(Oreo).
Wenn ich ausführen-oben-Methode in Android 8.0, bin ich immer unter Anweisung im logcat.
com.gck.dummy W/WifiManager: com.gck.dummy attempted call to setWifiApEnabled: enabled = true
Gibt es einen anderen Weg, um on/off-hotspot auf android 8.0
Möchten Sie schalten Sie WLAN oder hotspot
Ich will turn on/off-hotspot...nicht w-LAN...
ist es möglich, dass Sie entfernt auf diese Weise, es zu tun in Android O? Einschalten der wifi-hotspot ist nicht Teil des Android-sdk. Also dieser Weg, der gegangen ist um mit der spiegelung ist etwas hacky
Ich will turn on/off-hotspot...nicht w-LAN...
ist es möglich, dass Sie entfernt auf diese Weise, es zu tun in Android O? Einschalten der wifi-hotspot ist nicht Teil des Android-sdk. Also dieser Weg, der gegangen ist um mit der spiegelung ist etwas hacky
InformationsquelleAutor Chandrakanth | 2017-08-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich dachte, die
LocalOnlyHotspot
Strecke war der Weg, aber wie @edsappfactory.com sagte in den Kommentaren - es gibt nur geschlossenes Netzwerk, kein Internetzugriff.In Oreo hot-spotting/tethering verschoben
ConnectionManager
, und seine Anmerkungen@SystemApi
, so (nominell) nicht zugegriffen werden kann.Als Teil von etwas, was ich Tat, ich machte eine app und legen Sie es auf github hier. Es verwendet reflektion, um auf die Funktion und DexMaker zu erzeugen, eine Unterklasse von
ConnectionManager.OnStartTetheringCallback
(was Sie auch nicht).Denke, es funktioniert alles okay - bisschen rau an den Rändern, also bitte fühlen Sie sich frei, besser zu machen!
Relevanten bits des Codes befinden sich in:
MyOreoWifiManager
und;CallbackMaker
Verlor ich die Geduld versucht, meine DexMaker generierte callback ausgelöst die
MyOnStartTetheringCallback
, so dass alle code ist in Unordnung und kommentiert.Es funktioniert.... haben Sie eine Idee, wie man den Namen zu ändern und übergeben Sie der hotspot auf oreo?
jemand anderes fragte mich tatsächlich, dass auf GitHub vor kurzem. Sie müssten, um herauszufinden, wo Sie sich bewegten, Methoden zum ändern dieser Einstellungen in der Android-code und vielleicht versuchen, mithilfe von Reflektion. Glaube nicht, dass Ihr in
ConnectionManager
. Sorry kann nicht viel mehr helfen.danke für das wiederherstellen, ich habe die Lösung gefunden und nochmals vielen Dank für die tolle Arbeit, bei der Reflexion... keep it up.
Toll. Jede chance, Sie könnten Ihre Lösung irgendwo - in einem Kern-oder GitHub, so kann ich Punkt ppl Richtung es das nächste mal, wenn ich gefragt werde? Verpflichten konnte zu meiner ursprünglichen gitgub-code, wenn Sie, zu erleichtern.
InformationsquelleAutor Jon
Endlich hab ich die Lösung.
Android 8.0, sofern Sie die öffentliche api zu aktivieren/deaktivieren hotspot. WifiManager
Unten ist der code zum einschalten hotspot
onStarted(WifiManager.LocalOnlyHotspotReservation reservation)
Methode wird aufgerufen, wenn hotspot eingeschaltet ist.. MitWifiManager.LocalOnlyHotspotReservation
Referenz, die Sie anrufenclose()
Methode schalten Sie hotspot.Hinweis:
Einschalten, hotspot, der
Location(GPS)
aktiviert werden soll, in das Gerät. Sonst wird es zu werfenSecurityException
Wie pro die docs-app haben sollte, CHANGE_WIFI_STATE und ACCESS_COARSE_LOCATION-Berechtigungen. Und vor dem einschalten Hotspot, GPS(Standort) sollten auf. Stellen Sie sicher, dass die oben genannten 2 Berechtigungen gewährt werden.
Wie kann ich die SSID-Namen, die mit dieser Methode? Jetzt bekomme ich so etwas wie "AndroidShare_xxxx"
Das ist in Ordnung, wenn Sie möchten, erstellen Sie ein geschlossenes Netzwerk. Ihr hotspot wird keinen Zugang zum internet haben. Siehe [developer.android.com/reference/android/net/wifi/..., android.os.Hf)]
Okay, aber wie schalten Sie den WiFi-Hotspot mit internet?
InformationsquelleAutor Chandrakanth
Als pro Jon Vorschlag, ich habe einen anderen Weg zu aktivieren WifiHotSpot in Android Oreo und oben.
ProxyBuilder ist ähnlich der von java.lang.reflektieren.Proxy-Klasse, aber dies funktioniert für Klassen statt interfaces (java.lang.reflektieren.Proxy funktioniert).
Hi @VishalSharma, ist das arbeiten an Oreo, Aktien internet nach Tether?
Ja, es funktioniert auf fast allen Oreo-Geräte mit internet-sharing-mit Ausnahme der LGE.
das ist " Super!! Kann ich irgendwie die Arbeit snippet bitte?
InformationsquelleAutor Vishal Sharma