Почему бы не включить Wi-Fi на мгновение, пока вы не получите адрес MAC, а затем отключить его, как только вы закончите получение MAC-адрес?
Конечно, это делается, если получение MAC-адреса абсолютно важно.
UNTESTED КОД
WifiManager wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
if(wifiManager.isWifiEnabled()) {
// WIFI ALREADY ENABLED. GRAB THE MAC ADDRESS HERE
WifiInfo info = wifiManager.getConnectionInfo();
String address = info.getMacAddress();
} else {
// ENABLE THE WIFI FIRST
wifiManager.setWifiEnabled(true);
// WIFI IS NOW ENABLED. GRAB THE MAC ADDRESS HERE
WifiInfo info = wifiManager.getConnectionInfo();
String address = info.getMacAddress();
}
Вам нужны эти настройки разрешения в Manifest
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.UPDATE_DEVICE_STATS"></uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
Я не совсем уверен, что если UPDATE_DEVICE_STATS
разрешение необходимо в данном случае. Пожалуйста, попробуйте, прежде чем принять решение сохранить его.
Вы не можете получить MAC-адрес, если WiFi отключен, в этом случае вы можете использовать DEVICE ID, который снова уникален для всех устройств. – user2060383