الاثنين، 20 مارس 2017

كيفية الحصول على الـ Mac Address برمجياً في أندرويد

كيفية الحصول على الـ Mac Address برمجياً في أندرويد


كيفية الحصول على الـ Mac Address برمجياً في أندرويد

الـ Mac Address هو الرقم الفريد الخاص بمحول الواي فاي (راديو الواي فاي في هاتفك) ولايمكن أن يتشابه هاتفان في عنوان الـ Mac ويكون الـ Mac Address بصيغة Hexadecimal ومشابهاً للشكل التالي:

23:3F:D4:56:12:C3 أو 23:3f:d4:56:12:c3

في هذا الدرس ستتعرف كيف تحصل على الـ Mac Address برمجياً وبطريقة بسيطة، إليك الكود ثم سيتم شرح كل سطر فيما بعد:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);

if(!wifiManager.isWifiEnabled()) {
    wifiManager.setWifiEnabled(true);
}

while (true) {
    if(wifiManager.isWifiEnabled()) break;
}

WifiInfo wifiInfo = wifiManager.getConnectionInfo();

String mac = wifiInfo.getMacAddress();

شرح الكود:

السطر 1:

في هذا السطر قمنا بانشاء كائن من الكلاس WifiManager وهذا الكلاس يمكنك من إدارة كل مايتعلق بالواي فاي واتصالاتها والبحث عن الشبكات والاتصال بشبكة واي فاي كما يمكنك من الحصول على معلومات عن محول الواي فاي وحالة الاتصال وسنتناول هذه المواضيع في دروس أخرى ان شاء الله.
للحصول على كائن من هذا الكلاس يحب عليك استخدام الدالة ()Context.getSystemService وتمرر لها اسم الخدمة التي تريدها وهنا مررنا لها Context.WIFI_SERVICE وبما ان هذه الدالة ترجع لنا قيمة من النوع Object إذن يجب ان نقوم بعمل Cast للتحويل إلى WifiManager.

السطر 3 إلى 5:

يجب عليك الانتباه إلى أنه لايمكنك الحصول على عنوان Mac أو أي شئ متعلق بالواي فاي إلا إذا كان الواي فاي قد تم تشغيله في الهاتف.
هنا ببساطة نقوم بالتحقق ما إذا كان الواي فاي تم تشغيله او لا وذلك عبر الدالة ()isWifiEnabled التابعة للكلاس WifiManager  والتي سترجع لنا true إذا كان تم تشغيله و false إذا كان مطفأ.
إذا تحققت أن الواي فاي مطفأ نقوم بتشغيله عن طريق الدالة ()setWifiEnabled التابعة للكلاس WifiManager والتي تقوم بتشغيل أو اطفاء الواي فاي، فلو اردت تشغيله قم بتمرير true لهذه الدالة وإذا أردت اطفاءه قم بتمرير false.

السطر 7 إلى 9:

إذا كان الواي فاي مطفأ ثم قمنا بتشغيله فإنه يحتاج إلى بعض الوقت ليعمل (أجزاء من الثانية لكنها مهمة).
هنا نقوم بالانتظار حتى نتأكد انه قد تم حقاً تشغيل الواي فاي وذلك عبر جملة while التكرارية حيث نصنع لوب لا نهائي لن يتم إيقافه إلا إذا تم تشغيل الواي فاي حقاً (لأنه كما ذكرت سابقاً لايمكنك الحصول على عنوان Mac أو أي شئ متعلق بالواي فاي إلا إذا كان الواي فاي قد تم تشغيله في الهاتف).

السطر 11:

في هذا السطر قمنا بانشاء كائن من الكلاس WifiInfo وهذا الكلاس يمكنك من معرفة كل المعلومات المتعلق بإتصال الواي فاي (وليس راديو الواي فاي نفسه لأن هذه وظيفة الكلاس WifiManager).
هذه المعلومات مثل اسم الشبكة المتصل بها حالياً أو عنوان الـ IP وغيرها من المعلومات، وفي حالتنا هذا سنستخدمه للحصول على الـ Mac Address.
نحصل على كائن من هذا الكلاس عبر الدالة ()getConnectionInfo التابعة للكلاس WifiManager.

السطر 13:

في هذا السطر قمنا بكل بساطة بجلب الـ MacAddress عبر الدالة ()getMacAddress التابعة للكلاس WifiInfo.
يمكنك الآن استعماله لعرضه في تطبيقك او تخزينه وغيرها من الاستعمالات حسب احتياجك.

الأذونات المطلوبة للحصول على الـ Mac Address برمجياً في أندرويد

لتطبيق هذا الدرس تحتاج إلى إضافة التصريحين التاليين في ملف AndroidManifest.xml
1
2
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />


-------------------------------------------

إلى هنا وصلنا لنهاية الدرس، إذا أعجبك الموضوع فتفضل بمشاركته مع اصدقاءك كما يمكنك إتحافنا بتعليقاتك ^^
نلتقي في دروس أخرى.