Android 获取手机 MAC 地址:完整代码及步骤
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.INTERNET、android.permission.ACCESS_NETWORK_STATE、android.permission.ACCESS_WIFI_STATE:用于访问网络和 Wi-Fi 状态的权限。
希望本教程能够帮助您在 Android Studio 中获取手机的 MAC 地址。
原文地址: https://www.cveoy.top/t/topic/mQ7j 著作权归作者所有。请勿转载和采集!