2016-07-11 15 views
4

Kann man die MAC-Adresse eines Geräts mit Android 6.0+ programmgesteuert erhalten?Kann man die MAC-Adresse eines Geräts mit Android 6.0+ programmgesteuert abrufen?

Nach this,

Benutzer mit besserer Datenschutz zu liefern, in dieser ab der Version entfernt Android programmatischen Zugriff auf das lokale Hardware-Kennung des Geräts für Anwendungen, den Wi-Fi und Bluetooth-APIs. Die WifiInfo.getMacAddress() und die BluetoothAdapter.getAddress() Methoden geben jetzt einen konstanten Wert von 02: 00: 00: 00: 00: 00 zurück.

Bedeutet das, dass es unmöglich ist, die MAC-Adresse des Geräts in Android 6.0+ zu erhalten? Wenn es möglich ist, können Sie mir sagen, wie man es in Android Studio macht?

Auch this answer gilt nur für Geräte mit Android-Versionen unter 6.0

+4

Stop Hinzufügen Android Studio-Tag. Ihre Frage hat nichts mit Android-Studio zu tun –

+0

@TimCastelijns Bitte aufhören zu bearbeiten meine Frage. Ich möchte Android Studio verwenden. – Dake

+4

das ist toll, aber das ist völlig irrelevant. Ihre Frage gilt auch für Personen, die Eclipse verwenden. Ist Ihre Frage zur IDE? Nein? Verwenden Sie nicht das Tag –

Antwort

7

Sie können eine alternative Art und Weise verwenden, um das MAC-Adr auf einem Android 6.0-Gerät zu bekommen.

Erste Internet-User-Berechtigung zum AndroidManifest.xml hinzufügen:

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

Zweitens

try { 
     // get all the interfaces 
     List<NetworkInterface> all = Collections.list(NetworkInterface.getNetworkInterfaces()); 
     //find network interface wlan0 
     for (NetworkInterface networkInterface : all) { 
      if (!networkInterface.getName().equalsIgnoreCase("wlan0")) continue; 
     //get the hardware address (MAC) of the interface  
      byte[] macBytes = networkInterface.getHardwareAddress(); 
      if (macBytes == null) { 
       return ""; 
      } 


      StringBuilder res1 = new StringBuilder(); 
      for (byte b : macBytes) { 
       //gets the last byte of b 
       res1.append(Integer.toHexString(b & 0xFF) + ":"); 
      } 

      if (res1.length() > 0) { 
       res1.deleteCharAt(res1.length() - 1); 
      } 
      return res1.toString(); 
     } 
    } catch (Exception ex) { 
      ex.printStackTrace(); 
    } 
+0

Vielen Dank für Ihre Antwort! Kannst du bitte kommentieren, was dein Code Schritt für Schritt macht? Ich bin ein neuer Programmierer. :) – Dake

+0

Bearbeitet. Hoffe diese Hilfe :) – GAVD

+0

Also, 'macBytes' ist die MAC-Adresse, oder? – Dake