2017-04-11 11 views
1

기기 mac 주소가 필요한 애플리케이션이 있습니다. 나는 마쉬멜로 (Marshmallow)와 아래에서 쉽게 맥 주소를 얻고있다. 그러나 안드로이드 누가와 O에 문제가있다. 그래서 맥을 찾는 방법.Android Nougat 및 O에서 Device mac 주소 받기 프로그래밍 방식으로

+0

이 찾는 MAC 주소는 프로그램 또는 수동인가? – Lokesh

+0

프로그래밍 방식으로 –

+0

이유 투표를 하시겠습니까? –

답변

3

나중에 6.0 및 이후 변경 : https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-hardware-id

이 출시부터 큰 데이터 보호를 사용자에게 제공하기 위해, 안드로이드는 Wi-Fi와를 사용하여 응용 프로그램에 대한 장치의 로컬 하드웨어 식별자에 프로그래밍 방식으로 액세스를 제거 블루투스 API. WifiInfo.getMacAddress() 및 BluetoothAdapter.getAddress() 메서드 은 이제 02 : 00 : 00 : 00 : 00 : 00의 상수 값을 반환합니다.

블루투스 및 Wi-Fi 스캔을 통해 주변의 외부 기기의 하드웨어 식별자에 액세스하려면 앱에 ACCESS_FINE_LOCATION 또는 ACCESS_COARSE_LOCATION 권한이 있어야합니다. 7.0

동작 변경 :

장치 소유자 디바이스 식별자를 액세스 할 수있다. 기기 소유자는 DevicePolicyManagewr.getWifiMacAddress()를 사용하여 기기의 Wi-Fi MAC 주소 인 에 액세스 할 수 있습니다. 장치에서 Wi-Fi가 으로 활성화 된 적이없는 경우이 메서드는 null 값을 반환합니다.

+0

나는 6 마쉬 멜로우에서 맥을 발견 할 수 있지만 7N은 찾을 수 없다. –

+0

내 대답이 수정되었습니다. 이제 해결되어야합니다. DevicePolicyManager를 사용하십시오 (예, 위의 DevicePolicyManagewr은 W입니다). 문서에는 오타가 있습니다. –

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 :,210 https://developer.android.com/reference/android/app/admin/DeviceAdminReceiver.html#getWho(android.content.Context)

해피 코딩 ....

+0

"isAdminActive"가 false 인 경우이 의미는 무엇입니까? – GuybrushThreepwood