私のアプリでは、自分のWiFiネットワークを持つデバイスに接続しています。 インターネットに接続していなくても、このネットワークに接続したい場合は、アンドロイド6以上で数秒後に私に尋ねられます。 そのメッセージを承認した後で、自分のデバイスに接続できます。 プログラムでネットワークに接続しようとしましたが、ユーザーが設定に行って毎回手動で接続するよう強制しません。私は、デバイスのネットワークに接続するには、次のコードを使用:WiFi接続を使用するようにアプリを強制しようとしてもインターネット接続なしでWiFiを使用する
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;
}
}
}
とし、携帯電話のデータ私が使用していません:
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);
}
}
}
});
}
限りが、 Cellularデータがアクティブなので、デバイスは接続されません。 Cellularデータを無効にすると、正常に動作します。 セルラーデータを無効にするようにユーザーに指示せずに、プログラマチックに行う方法があるかどうかを知る必要があります。
おかげ
こんにちは@YYjoあなたはこの質問の回答がありますか? @KenRatanachaiS。 –
残念ながら違います。限り、私はそれがちょうどアンドロイドでうまく動作しないと言うことができます。 – YYJo