Я пытаюсь создать простое приложение, которое подключает смартфон к указанной сети Wi-Fi и перенаправляет на веб-просмотр, который показывает веб-сервер, подключенный к сети Wi-Fi, путем мигания QR-кода.
Когда я fla sh мой 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" />
РЕДАКТИРОВАТЬ: Мой телефон - Samsung Galaxy S20 Ultra с Android 10
Я устанавливаю сеть Приложение Analyzer, подтверждающее, что я на самом деле не подключен к сети Wi-Fi.
Подключение к сети Wi-Fi вручную:
Снимок экрана Анализатор сети Подключение к Wi-Fi вручную
Подключение путем сканирования QR-кода из Моего приложения:
Снимок экрана Успешное сканирование QR-кода, подтверждение подключения
Снимок экрана Настройки Wi-Fi Фактическая сеть Подключено через мое приложение
Снимок экрана Сетевой анализатор подключен к Wi-Fi через мое приложение
Как мы видим, похоже, что я подключен к сети Wi-Fi, но он не дает мне IP-адрес, и я не могу пинговать свой веб-сервер ...
Нужно ли мне больше разрешений в AndrooidManifest ??
Я не понимаю, почему, когда я использую свое приложение для подключения к сети Wi-Fi, у меня возникает эта проблема ... Я пытаюсь использовать другие Wi-Fi сеть и это то же самое. Я полностью застрял и не нашел решения на форумах ...
Если кто-то может мне помочь, пожалуйста, извините за мой английский sh ... Спасибо,