web-dev-qa-db-ja.com

Android WifiなしのデバイスのMACアドレスを取得

Android Wifi-Interfaceを持たないデバイスのネットワークインターフェイスのMACアドレスを取得するにはどうすればよいですか(例Androidエミュレータ)? WifiManagerを介して取得されたWifiInfoは、nullを返します。

[〜#〜] edit [〜#〜]

より明確にするために、ローカルネットワーク上の既存のネットワークプロトコル(自分で設計したものではない)と通信する必要があります。ここで、登録フェーズ中にペイロード内の通信インターフェイスのMACアドレスを送信する必要があります。

21
Tom

/ sys/class/net/[something]/addressをテキストファイルとして読み取ります。

しかし、あなたが考える方法で役に立つとは考えられません。

17
Chris Stratton

飛躍して、デバイスの一意の識別子を確立するためにこのMACアドレスが必要であると仮定します。 Macアドレスはこれを行う方法ではありません。

Identifying App Installations 」というタイトルのAndroid Developer Blogの投稿があります。これは、人気のある方法や賛否両論を含む、一意のIDの生成に関するトピックをかなりカバーしています。この記事に関連するのは、次の引用です。

デバイスのWiFiまたはBluetoothハードウェアからMacアドレスを取得できる場合があります。これを一意の識別子として使用することはお勧めしません。まず、すべてのデバイスにWiFiがあるわけではありません。また、WiFiがオンになっていない場合、ハードウェアはMacアドレスを報告しない場合があります。

代わりに利用可能なオプションには、TelephonyManager.getDeviceId()、Android.os.Build.SERIAL、およびSettings.Secure.Android_IDが含まれます。これらはすべて、リンクされた投稿で詳しく説明されています。

23
Alexander Lucas

この投稿を参照 Pure-Java実装を提供するためにUtils.Javaの例を提出しました。

Utils.getMACAddress("wlan0");
Utils.getMACAddress("eth0");
Utils.getIPAddress(true); // IPv4
Utils.getIPAddress(false); // IPv6 
4
Whome

MACアドレスが必要なネットワークインターフェイスは何ですか? Wi-Fiがない場合は、Wi-FiデバイスのMACアドレスを取得できません。物理的なハードウェアを表し、存在しない場合は存在しません。

2
Jess

Android adbを使用してデバイスのwifi MACを取得するには:adb Shell getprop ril.wifi_macaddr

プログラムで取得するには、Javaで次のコードを使用します。

Process p = Runtime.getRuntime.exec("adb", "Shell", "getprop", "ril.wifi_macaddr")
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream());
String macAddress = br.readLine();
0
Thejus Krishna