Android 获取手机 MAC 地址:完整代码及步骤

本教程将详细介绍如何在 Android Studio 中使用 Java 标准库获取手机 MAC 地址并将其显示在屏幕和控制台上。

1. 添加按钮和文本视图

首先,在 activity_main.xml 文件中添加一个按钮和一个文本视图,用于触发获取 MAC 地址操作并显示结果。

<?xml version='1.0' encoding='utf-8'?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="16dp"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/tv_mac_address"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="18sp"
        android:textStyle="bold"
        android:layout_marginBottom="16dp" />

    <Button
        android:id="@+id/btn_get_mac_address"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Get MAC Address"
        android:onClick="getMacAddress" />

</LinearLayout>

2. 实现 getMacAddress() 方法

MainActivity.java 中实现 getMacAddress() 方法,该方法利用 Java 标准库 java.net.NetworkInterface 获取手机的 MAC 地址。

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.net.NetworkInterface;
import java.util.Collections;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private TextView tvMacAddress;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tvMacAddress = findViewById(R.id.tv_mac_address);
        Button btnGetMacAddress = findViewById(R.id.btn_get_mac_address);
    }

    public void getMacAddress(View view) {
        try {
            List<NetworkInterface> interfaces = Collections.list(NetworkInterface.getNetworkInterfaces());
            for (NetworkInterface intf : interfaces) {
                if (intf.getName().equalsIgnoreCase("wlan0")) {
                    byte[] mac = intf.getHardwareAddress();
                    if (mac == null) {
                        tvMacAddress.setText("MAC address not found.");
                        return;
                    }
                    StringBuilder sb = new StringBuilder();
                    for (byte b : mac) {
                        sb.append(String.format("%02X:", b));
                    }
                    if (sb.length() > 0) {
                        sb.deleteCharAt(sb.length() - 1);
                    }
                    String macAddress = sb.toString();
                    tvMacAddress.setText("MAC address: " + macAddress);
                    System.out.println("MAC address: " + macAddress);
                    return;
                }
            }
            tvMacAddress.setText("MAC address not found.");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

3. 添加必要的权限

AndroidManifest.xml 文件中添加以下权限,以允许应用程序访问网络状态和 Wi-Fi 状态。

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

4. 运行应用程序

运行应用程序,点击“Get MAC Address”按钮,即可在文本视图中显示手机的 MAC 地址。

注意事项:

  • 由于 Android 系统的限制,获取到的 MAC 地址可能并非真实的硬件 MAC 地址,而是一个随机生成的地址。
  • 代码中使用了 wlan0 作为 Wi-Fi 接口名称,如果您的设备使用不同的接口名称,请修改代码中的 intf.getName().equalsIgnoreCase("wlan0") 部分。

代码示例:

  • activity_main.xml

  • MainActivity.java

相关知识点:

  • java.net.NetworkInterface 类:用于获取网络接口信息,包括 MAC 地址。
  • android.permission.INTERNETandroid.permission.ACCESS_NETWORK_STATEandroid.permission.ACCESS_WIFI_STATE:用于访问网络和 Wi-Fi 状态的权限。

希望本教程能够帮助您在 Android Studio 中获取手机的 MAC 地址。

Android 获取手机 MAC 地址:完整代码及步骤

原文地址: https://www.cveoy.top/t/topic/mQ7j 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录