Android: как получить текущее имя устройства WiFi-direct

В настройке P2P я понимаю, как получить имя другого устройства, но как я могу получить имя моего собственного устройства? (тот, который отображается в WiFi-direct в настройках).

я проверил WiFiManager, WiFiInfoи многое другое без успеха.

4 ответа

После того, как вы включите Wi-Fi на своем устройстве, он отправит WIFI_P2P_THIS_DEVICE_CHANGED_ACTION трансляцию. Вы можете поймать это с помощью приемника вещания, и вы можете получить объект WifiP2pDevice, то есть ваше устройство.

 @Override
 public void onReceive(Context context, Intent intent) {
     WifiP2pDevice device = intent.getParcelableExtra(WifiP2pManager.EXTRA_WIFI_P2P_DEVICE);
     String thisDeviceName = device.deviceName;
 }

Получив менеджер, вы можете использовать WifiP2pManager.requestDeviceinfo() с DeviceInfoListener.

      mManager.requestDeviceInfo(mChannel, wifiP2pDevice -> String deviceName = wifiP2pDevice.deviceName));

Но он доступен только через API29.

Просто в вашем приемнике вещания,

 if (WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION.equals(action)) { 
        WifiP2pDevice myDevice =(WifiP2pDevice)intent.getParcelableExtra(WifiP2pManager.EXTRA_WIFI_P2P_DEVICE);
        Log.d("Wifi Direct: My Device",myDevice.devicename); 
    }

Попробуйте этот код:

public static String getHostName(String defValue) {
    try {
        Method getString = Build.class.getDeclaredMethod("getString", String.class);
        getString.setAccessible(true);
        return getString.invoke(null, "net.hostname").toString();
    } catch (Exception ex) {
        return defValue;
    }
}
Другие вопросы по тегам