Android および iOS 電話の Unity ゲームアプリで BSSID (デバイスの MAC アドレスではなく、接続している Wi-Fi ルーターの MAC アドレス) を取得するにはどうすればよいですか?
これらの方法を試してみましたが、どれもうまくいきませんでした.ゲームシーンに印刷して結果を確認します. 助けてください
*方法 1:このコードは正常に機能し、正しい BSSID 情報を取得しますが、エディターでのみ機能します。Android アプリにビルドすると機能しません。戻り文字列は何もありません (null ではなく空の値)。
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 関数を呼び出し、Unity ドキュメントのように Android Phone で BSSID を取得しています。Unity のAndroidJavaClassと Android のWifiInfoクラスに関する詳細情報
string mac = "";
AndroidJavaClass jc = new AndroidJavaClass("android.net.wifi.WifiInfo");
mac = jc.Call<string>("getBSSID");
また、場所「[Project Location]\Assets\Plugins\Android」にある「AndroidManifest.xml」ファイルを以下のコードで変更することにより、wifi 状態を読み取るための Android アクセス許可を追加します。
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
このメソッドはエディターでは機能しないため、Android Phone でこれをビルドして実行しましたが、文字列が返されません。誰でも私を助けてください。