web-dev-qa-db-ja.com

WiFiネットワークインターフェイスのMACアドレスを取得する方法は?

AndroidのJava.net.NetworkInterface実装には、
byte [] getHardwareAddress()メソッド http://developer.Android.com/reference/Java/net/NetworkInterface.html

私は決定的な答えなしでこれをしようとしている人々のいくつかのフォーラムを見つけました、私はややクロスデバイスのUUIDを取得する必要があるので、電話番号やAndroid_IDに依存することはできませんGoogleアカウントを持っているユーザー) http://developer.Android.com/reference/Android/provider/Settings.Secure.html#Android_ID

Linuxでは、ifconfigを使用するか、/ proc/net/arpから読み取ることができ、ハードウェアアドレスを簡単に取得できます。

Androidに読み取り可能なファイルがありますか?

電話の[設定]> [電話について]> [ステータス]に表示されるため、このアドレスを取得する方法が必要です。

39
Gubatron

電話の[設定]> [電話について]> [ステータス]に表示されるため、このアドレスを取得する方法が必要です。

つまり、おそらくGoogle Code Searchを使用して、Androidオープンソースコードをパターして、どこからそれを引き出しているのかを把握することができます。

自分で少しパターすることで、WifiInfogetMacAddress()を使用しているように見えます。

22
CommonsWare

遅い答えですが、同じ「問題」を持つ他の人を助けることができます。

answer は本当に簡単です:

WifiManager wifiMan = (WifiManager) this.getSystemService(
                Context.WIFI_SERVICE);
WifiInfo wifiInf = wifiMan.getConnectionInfo();
String macAddr = wifiInf.getMacAddress();

上記のコードは、デバイスのMACアドレスを取得します。アドレスを取得するときは、wifiを有効にしてください。このコードスニペットはアクティビティで使用する必要があります。

93
Tobiaswk

更新:

開始 Android 6.0、上記のAPIは、すべてのデバイスの定数MACアドレスを提供します。 02:00:00:00:00:00。詳細については以下を参照してください
http://developer.Android.com/about/versions/Marshmallow/Android-6.0-changes.html
6.0でMACアドレスを見つけたと主張する別の投稿を見つけましたが、テストしていません
Android Marshmallow でWi-Fi Macアドレスを取得する方法

6
Kaps

次の許可を追加します。

 <uses-permission Android:name="Android.permission.ACCESS_WIFI_STATE" />

WifiManagerはonCreateで初期化します。

 WifiManager wifiMgr = (WifiManager) getContext().getSystemService(context.WIFI_SERVICE);

以下の機能を使用してください。

 public void WI-FI_MAC() {
    WifiInfo wifiInfo = wifiMgr.getConnectionInfo();
    String macAddress = wifiInfo.getMacAddress();
    }
0
Quantum4U

On Android Q、もうMACアドレスにアクセスする方法はありません。

WifiInfo.getMacAddress()は常に_02:00:00:00:00:00_を返します。

また、WifiConfiguration.getRandomizedMacAddress()は使用できなくなります。

0
fawkes