Je dois obtenir l'adresse MAC de mon appareil Android en utilisant Java. J'ai fait des recherches en ligne, mais je n'ai rien trouvé d'utile.
Réponses
Trop de publicités?Comme cela a déjà été souligné dans le commentaire, l'adresse MAC peut être reçue par le biais de la WifiManager .
WifiManager manager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo info = manager.getConnectionInfo();
String address = info.getMacAddress();
N'oubliez pas non plus d'ajouter les permissions appropriées dans votre fichier AndroidManifest.xml
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
Veuillez vous référer à Changements dans Android 6.0 .
Pour offrir aux utilisateurs une meilleure protection des données, Android supprime, à partir de cette version, l'accès programmatique à l'identifiant matériel local de l'appareil pour les applications utilisant les API Wi-Fi et Bluetooth. Les méthodes WifiInfo.getMacAddress() et BluetoothAdapter.getAddress() renvoient désormais une valeur constante de 02:00:00:00:00:00.
Pour accéder aux identifiants matériels des appareils externes situés à proximité via les balayages Bluetooth et Wi-Fi, votre application doit désormais disposer des autorisations ACCESS_FINE_LOCATION ou ACCESS_COARSE_LOCATION.
Obtenir l'adresse MAC par [WifiInfo.getMacAddress()
](https://developer.android.com/reference/android/net/wifi/WifiInfo.html#getMacAddress()) ne fonctionnera pas sur Marshmallow et les versions supérieures, il a été désactivé et reviendra la valeur constante de 02:00:00:00:00:00
.
public static String getMacAddr() {
try {
List<NetworkInterface> all = Collections.list(NetworkInterface.getNetworkInterfaces());
for (NetworkInterface nif : all) {
if (!nif.getName().equalsIgnoreCase("wlan0")) continue;
byte[] macBytes = nif.getHardwareAddress();
if (macBytes == null) {
return "";
}
StringBuilder res1 = new StringBuilder();
for (byte b : macBytes) {
res1.append(String.format("%02X:",b));
}
if (res1.length() > 0) {
res1.deleteCharAt(res1.length() - 1);
}
return res1.toString();
}
} catch (Exception ex) {
}
return "02:00:00:00:00:00";
}
J'ai trouvé cette solution à partir de http://robinhenniges.com/en/android6-get-mac-address-programmatically et ça marche pour moi ! J'espère que cela vous aidera !
public static String getMacAddr() {
try {
List<NetworkInterface> all = Collections.list(NetworkInterface.getNetworkInterfaces());
for (NetworkInterface nif : all) {
if (!nif.getName().equalsIgnoreCase("wlan0")) continue;
byte[] macBytes = nif.getHardwareAddress();
if (macBytes == null) {
return "";
}
StringBuilder res1 = new StringBuilder();
for (byte b : macBytes) {
String hex = Integer.toHexString(b & 0xFF);
if (hex.length() == 1)
hex = "0".concat(hex);
res1.append(hex.concat(":"));
}
if (res1.length() > 0) {
res1.deleteCharAt(res1.length() - 1);
}
return res1.toString();
}
} catch (Exception ex) {
}
return "";
}
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
public String getMacAddress(Context context) {
WifiManager wimanager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
String macAddress = wimanager.getConnectionInfo().getMacAddress();
if (macAddress == null) {
macAddress = "Device don't have mac address or wi-fi is disabled";
}
return macAddress;
}
avoir d'autres moyens aquí
- Réponses précédentes
- Plus de réponses