如何在 Android 和 iOS 手机上的 Unity 游戏应用程序中获取 BSSID(我正在连接的 wifi 路由器的 MAC 地址,而不是我的设备 MAC 地址)?
我尝试了这些方法,但都没有工作。我通过在游戏场景中打印来检查结果。请帮忙
*方法1:此代码工作正常并获得正确的BSSID信息,但它仅适用于编辑器,当我将它构建到Android App时它不起作用,返回字符串什么都没有(不是空值而是空值)。
string mac = "";
var card = NetworkInterface.GetAllNetworkInterfaces().FirstOrDefault();
if (card == null)
return null;
else
{
byte[] bytes = card.GetPhysicalAddress().GetAddressBytes();
for (int i = 0; i < bytes.Length; i++)
{
mac = string.Concat(mac + (string.Format("{0}", bytes[i].ToString("X2"))));
if (i != bytes.Length - 1)
{
//This is just for formating the final result
mac = string.Concat(mac + ":");
}
}
mac = card.GetPhysicalAddress().ToString();
return mac;
}
*方法2:我正在使用AndroidJavaClass调用一个android函数来获取Android手机上的BSSID,就像Unity文档中一样。更多关于Unity 中的AndroidJavaClass和 Android 的WifiInfo类的信息
string mac = "";
AndroidJavaClass jc = new AndroidJavaClass("android.net.wifi.WifiInfo");
mac = jc.Call<string>("getBSSID");
我还通过使用以下代码在“[项目位置]\Assets\Plugins\Android”位置修改“AndroidManifest.xml”文件来添加读取 wifi 状态的 android 权限
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
由于此方法不适用于编辑器,因此我在 Android 手机上构建并运行此方法,但没有返回字符串。谁能帮助我。