기기 mac 주소가 필요한 애플리케이션이 있습니다. 나는 마쉬멜로 (Marshmallow)와 아래에서 쉽게 맥 주소를 얻고있다. 그러나 안드로이드 누가와 O에 문제가있다. 그래서 맥을 찾는 방법.Android Nougat 및 O에서 Device mac 주소 받기 프로그래밍 방식으로
답변
나중에 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 값을 반환합니다.
나는 6 마쉬 멜로우에서 맥을 발견 할 수 있지만 7N은 찾을 수 없다. –
내 대답이 수정되었습니다. 이제 해결되어야합니다. DevicePolicyManager를 사용하십시오 (예, 위의 DevicePolicyManagewr은 W입니다). 문서에는 오타가 있습니다. –
일시간 후, 난 그냥 문제를 해결 .....
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)
해피 코딩 ....
"isAdminActive"가 false 인 경우이 의미는 무엇입니까? – GuybrushThreepwood
이 찾는 MAC 주소는 프로그램 또는 수동인가? – Lokesh
프로그래밍 방식으로 –
이유 투표를 하시겠습니까? –