Есть ли способ открыть активность Wifi в android и получить результат для успешного подключения в android - PullRequest
0 голосов
/ 11 февраля 2020

Итак, вот мой сценарий, я хочу, чтобы пользователь нажал кнопку, которая выводит его на экран сетей Wi-Fi, используя

startActivityForResult(Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS),RESULT_CODE);

Затем пользователь выбирает сеть Wi-Fi, подключается к ней и настройку Wi-Fi активность закрывается, и пользователь возвращается в мое приложение. Как мне этого добиться?

Ответы [ 2 ]

2 голосов
/ 11 февраля 2020

android .provider.Settings дает намеренные действия, которые можно использовать для запуска различных экранов настроек (например, ACTION_WIFI_SETTINGS).

Для работы с кнопкой необходимо написать:

yourButton.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View view) {
         Intent intent = new Intent(Settings.ACTION_WIFI_SETTINGS);
         startActivity(intent);
      }
});

Для получения обратного вызова с подключением по Wi-Fi вы должны указать разрешения в манифесте:

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

и поместить этот код в действие onCreate или каким-либо другим способом:

ConnectivityManager connectivityManager = (ConnectivityManager) 
   getSystemService(Context.CONNECTIVITY_SERVICE); 

NetworkRequest.Builder builder = new NetworkRequest.Builder();

connectivityManager.registerNetworkCallback(builder.build(),   
   new ConnectivityManager.NetworkCallback() { 
   @Override 
   public void onAvailable(Network network) { 
      //Do your work here or restart your activity
      Intent i = new Intent(this, MyActivity.class);
      i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | 
         Intent.FLAG_ACTIVITY_SINGLE_TOP);
      startActivity(i);
   } 
   @Override 
   public void onLost(Network network) {
       //internet lost
   }
}); 
0 голосов
/ 11 февраля 2020

попробуйте это:

startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
...