Android:如何获取当前设备 WiFi 直接名称

Posted

技术标签:

【中文标题】Android:如何获取当前设备 WiFi 直接名称【英文标题】:Android: How to get current device WiFi-direct name 【发布时间】:2014-10-30 02:23:22 【问题描述】:

在 P2P 设置中,我了解如何获取其他设备的名称,但我如何获取自己设备的名称? (设置下WiFi-direct中显示的那个)。

我检查了WiFiManagerWiFiInfo 等等,但都没有成功。

【问题讨论】:

你能编辑你的问题和显示代码吗? 不确定要添加什么...我要做的就是访问设备的名称,类似于在蓝牙中您会调用BluetoothAdapter.getDefaultAdapter().getName() WifiP2pDevice.deviceName ?见this 如何为自己的设备获取 WifiP2pDevice? 你找到解决办法了吗? 【参考方案1】:

在您打开设备上的 wifi 后,它会发送一个 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;
 

【讨论】:

注册WifiP2pBroadcastReceiver时会收到这个电话,不管wifi是否已经开启。 device 为空,因此得到NullPointerException【参考方案2】:

试试这个代码:

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;
    

【讨论】:

【参考方案3】:

只需在您的广播接收器中,

 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); 
    

【讨论】:

以上是关于Android:如何获取当前设备 WiFi 直接名称的主要内容,如果未能解决你的问题,请参考以下文章

如何在同一个wifi中获取其他设备的主机名?

Android通过ADB查看wifi密码

设备在Android中连接到WiFi时如何获取蜂窝网络的IP地址

android 如何获取连接wifi热点的设备数量

android 如何获取连接wifi热点的设备数量

如何通过 Android 设备创建的 WiFi 直接网络在 iOS 中使用 ZeroMQ 发送/接收消息