In meiner App verbinde ich mich mit einem Gerät, das über ein eigenes WiFi-Netzwerk verfügt. In Android 6 und höher fragt mich das System nach ein paar Sekunden, ob ich mich mit diesem Netzwerk verbinden möchte, obwohl keine Internetverbindung besteht. Erst nach Bestätigung dieser Nachricht kann ich mich mit meinem Gerät verbinden. Ich habe versucht, eine programmgesteuerte Verbindung mit dem Netzwerk herzustellen und den Benutzer nicht zu zwingen, zu seinen Einstellungen zu wechseln und jedes Mal manuell eine Verbindung herzustellen. Ich benutzte den folgenden Code in das Geräte-Netzwerk zu verbinden:Verwenden eines WiFi ohne Internetverbindung
private void connectToWiFi(WifiManager wifiManager, String wifiName) {
WifiConfiguration configuration = new WifiConfiguration();
configuration.SSID = "\"" + wifiName + "\"";
configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
wifiManager.addNetwork(configuration);
List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
for (WifiConfiguration i : list) {
if (i.SSID != null && i.SSID.equals("\"" + wifiName + "\"")) {
wifiManager.disconnect();
wifiManager.enableNetwork(i.networkId, true);
wifiManager.reconnect();
break;
}
}
}
und auch die App zu erzwingen versucht, die WiFi-Verbindung zu verwenden und nicht die Handy-Daten Ich verwende:
NetworkRequest.Builder builder;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
builder = new NetworkRequest.Builder();
builder.addTransportType(NetworkCapabilities.TRANSPORT_WIFI);
connectivityManager.requestNetwork(builder.build(), new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(Network network) {
String ssid = wifiManager.getConnectionInfo().getSSID();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
connectivityManager.bindProcessToNetwork(null);
if (ssid.equals("\"" + Prefs.getWifiName(PUFMainActivity.this) + "\"")) {
connectivityManager.bindProcessToNetwork(network);
connectivityManager.unregisterNetworkCallback(this);
}
}
}
});
}
Obwohl so lange Da die Mobilfunkdaten aktiv sind, ist das Gerät nicht angeschlossen. Wenn ich die Cellular-Daten deaktiviere, funktioniert es gut. Ich muss wissen, ob es eine Möglichkeit gibt, programmgesteuert zu tun, was ich will, ohne dem Benutzer mitzuteilen, seine Cellular-Daten zu deaktivieren.
Dank
Hallo @YYjo Haben Sie eine Antwort auf diese Frage? –
@KenRatanachaiS. Leider nicht. Soweit ich das beurteilen kann funktioniert es bei Android einfach nicht gut. – YYJo