Получить информацию о Wi-Fi программно на Android на Java.

Чтобы получить информацию о точке доступа Wi-Fi (также известное как SSID или идентификатор набора услуг) с помощью языка программирования Java в приложении Android, вам следует использовать Android Wi-Fi API. Это API позволяет получить доступ к функциям Wi-Fi устройства Android, включая сканирование доступных сетей Wi-Fi, подключение к сети Wi-Fi и получение SSID подключенной в данный момент сети Wi-Fi.

@android_its – уроки по Android разработке с нуля до профи в телеграме.

Вот пример того, как получить имя точки доступа Wi-Fi в приложении Android с помощью Java:

1. Во-первых, вам нужно будет добавить разрешения в файл AndroidManifest.xml. Эти разрешения позволяют вашему приложению получать доступ к функциям Wi-Fi устройства.

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

2. Далее вам нужно будет импортировать следующие классы:

import android.net.wifi.WifiManager;
import android.net.wifi.WifiInfo;

3. В Activitty или Fragment получите ссылку на объект WifiManager:

WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE)

4. Используйте объект WifiManager для получения объекта WifiInfo, который содержит информацию о подключенной в данный момент сети WiFi:

WifiInfo wifiInfo = wifiManager.getConnectionInfo();

Используйте объект WifiInfo, чтобы получить SSID подключенной в данный момент сети Wi-Fi:

String wifiname = wifiInfo.getSSID();

Если устройство в данный момент не подключено к сети Wi-Fi, метод getSSID() вернет нулевое значение. Также в результате getSSID могут быть кавычки, что выглядит не очень красиво, их тоже лучше убрать. Я резюмирую все шаги в следующем примере:

public String myGetWifiName(Context context) {
   String wifiname = null;
   try {
      WifiManager manager = (WifiManager) context.getApplicationContext().getSystemService(WIFI_SERVICE);
      if (manager.isWifiEnabled()) {
         WifiInfo wifiInfo = manager.getConnectionInfo();
         if (wifiInfo != null) {
            NetworkInfo.DetailedState state = WifiInfo.getDetailedStateOf(wifiInfo.getSupplicantState());
            if (state == NetworkInfo.DetailedState.CONNECTED || state == NetworkInfo.DetailedState.OBTAINING_IPADDR) {
               wifiname = wifiInfo.getSSID();
               if (wifiname.startsWith("\"") && wifiname.endsWith("\""))
                  wifiname = wifiname.substring(1, wifiname.length() - 1);
               Log.d("WifiName", "WifiName is: " + wifiname);
               return wifiname;
            }
         }
      }
   } catch (Exception e) {
   }
   return "";
}

В некоторых случаях ваш телефон может переключаться между разными сетями Wi-Fi, и лучше, чтобы ваше приложение получало уведомление об этом. Это эффективнее, чем когда ваше приложение, постоянно посылает запросы .

В этом случае вам нужно создать класс BroadcastReceiver:

public class WifiBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {

        String action = intent.getAction();
        if (WifiManager.SUPPLICANT_STATE_CHANGED_ACTION.equals(action)) {
            SupplicantState state = intent.getParcelableExtra(WifiManager.EXTRA_NEW_STATE);
            if (SupplicantState.isValidState(state) && state == SupplicantState.COMPLETED) {
                wifiname = myGetWifiName(context);

                //notified each of your listners
                Iterator it = mWifiListeners.iterator();
                while(it.hasNext()){
                    WiFiNameChangeListener listerner = (WiFiNameChangeListener) it.next();
                    listerner.wifiNameChanged(wifiname);
                }
            }
        }
    }
}

А затем зарегистрируйте его в Activity:

BroadcastReceiver broadcastReceiver = new WifiBroadcastReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION);
context.registerReceiver(broadcastReceiver, intentFilter);

Надеюсь, эта статья вам поможет!

Дайте мне знать, если у вас есть вопросы, в комментариях к посту.

+1
1
+1
2
+1
1
+1
0
+1
0

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *