Я пытаюсь создать простое приложение, которое подключает смартфон к указанной сети Wi-Fi и перенаправляет на веб-просмотр, который показывает веб-сервер, подключенный к сети Wi-Fi, путем мигания QR-кода.
Когда я мигаю своим QR-кодом (простой QR-код Wi-Fi), приложение спрашивает, хочу ли я подключиться к сети Wi-Fi, я подтверждаю, а затем перенаправляю на веб-просмотр, но веб-просмотр пуст ... Похоже, я подключен к Wi-Fi, но я не могу подключиться к сети...
Часть моей активности QR-кода:
public void successFlash(String ssid, String password) {
WifiNetworkSpecifier specifier = new WifiNetworkSpecifier.Builder()
.setSsid(ssid)
.setWpa2Passphrase(password)
.build();
NetworkRequest request = new NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.setNetworkSpecifier(specifier)
.build();
ConnectivityManager connectivityManager = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE);
ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() {
public void onAvailable(Network network) {
openActivity_redirect_webview();
}
@Override
public void onUnavailable() {
// do failure processing here..
openQrcodeActivity();
}
};
connectivityManager.requestNetwork(request, networkCallback);
}
Моя активность в веб-просмотре:
public class activity_redirect_webview extends AppCompatActivity {
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_redirect_webview);
webView = (WebView) findViewById(R.id.redirect_webview);
webView.setWebViewClient(new WebViewClient());
webView.getSettings().setLoadsImagesAutomatically(true);
webView.getSettings().setJavaScriptEnabled(true);
webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
webView.loadUrl("http://192.168.4.1/index.html");
}
}
Разрешение в AndroidManifest.xml
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-feature android:name="android.permission.WRITE_SETTINGS"
android:required="false"/>
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.wifi" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.VIBRATE" />
EDIT: Мой телефон — Samsung Galaxy S20 Ultra с Android 10.
Я устанавливаю приложение Network Analyzer, и оно подтверждает, что я на самом деле не подключен к сети Wi-Fi.
Ручное подключение к сети Wi-Fi:
Снимок экрана Анализатор сети Вручную подключен к Wi-Fi
Подключение путем сканирования QR-кода из Моего приложения:
Сканирование QR-кода выполнено успешно, подключение подтверждено
Скриншот настроек Wi-Fi: фактическая сеть, подключенная через мое приложение
Снимок экрана Network Analyzer, подключенный к Wi-Fi через приложение "Мое приложение"
Как мы видим, похоже, что я подключен к сети Wi-Fi, но она не дает мне IP-адрес, и я не могу пропинговать свой веб-сервер...
Нужно ли мне больше разрешений в AndroidManifest??
Я не понимаю, почему, когда я использую свое приложение для подключения к сети Wi-Fi, у меня возникает эта проблема... Я пытаюсь использовать другие сети Wi-Fi, и это то же самое. Я полностью застрял, и я не нашел решения на форумах...