2017-04-11 48 views
1

デバイスMACアドレスが必要なアプリケーションがあります。私はマシュマロで簡単にMACアドレスを取得していますが、アンドロイドのnougatとOに問題があります。 6.0以降以降に変更AndroidヌーガットとOでデバイスのMACアドレスを取得する

+0

プログラムまたは手動でこの発見MACアドレスですか? – Lokesh

+0

プログラムによって –

+0

なぜダウン票ですか? –

答えて

3

:より大きなデータ保護をユーザーに提供するためにhttps://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-hardware-id

、この リリースから、Androidのは、Wi-Fi回線を利用してアプリをデバイスのローカル ハードウェア識別子へのプログラムによるアクセスを削除し、 Bluetooth API。 WifiInfo.getMacAddress()およびBluetoothAdapter.getAddress()メソッド は、02:00:00:00:00:00の定数値を返すようになりました。 BluetoothとのWi-Fiスキャンを経て近くの外部デバイスのハードウェア識別子にアクセスするには

、あなたのアプリが今 ACCESS_FINE_LOCATIONまたはACCESS_COARSE_LOCATION権限を持っている必要があります。 7.0で

動作の変更:

デバイスの所有者は、デバイス識別子にアクセスすることができます。デバイス所有者は、 DevicePolicyManagewr.getWifiMacAddress()を使用して、デバイスのWi-Fi MACアドレス にアクセスできます。デバイスでWi-Fiが に設定されていない場合、このメソッドはnullを返します。

+0

私は6マシュマロではMACを見つけることができますが、7Nでは見つけることができません。 –

+0

私の答えを変更しました。今それは解決すべきです。 DevicePolicyManagerを使用します(上記はDevicePolicyManagewrとWです)。ドキュメントにはタイプミスがあります。 –

1

1時間後、私は問題を解決しました.....

DeviceAdminReceiver admin = new DeviceAdminReceiver(); 
DevicePolicyManager devicepolicymanager = admin.getManager(getApplicationContext()); 
ComponentName name1 = admin.getWho(getApplicationContext()); 
if (devicepolicymanager.isAdminActive(name1)){ 
      String mac_address = devicepolicymanager.getWifiMacAddress(name1); 
      Log.e("macAddress",""+mac_address); 
} 

参考文献:作業用

1)アンドロイド:https://developer.android.com/about/versions/nougat/android-7.0-changes.html

2)DevicePolicyManger: https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#getWifiMacAddress(android.content.ComponentName)

3)DeviceAdminReceiver: https://developer.android.com/reference/android/app/admin/DeviceAdminReceiver.html#getWho(android.content.Context)

コーディングハッピー....

+0

"isAdminActive"がfalseの場合、これはどういう意味ですか? – GuybrushThreepwood

関連する問題