【问题标题】:how to get Mac Address for Android studio app如何获取 Android Studio 应用程序的 Mac 地址
【发布时间】:2021-12-28 13:51:06
【问题描述】:

我正在使用 Android with Java(Android 工作室)创建 Android 应用程序,所以 我想获取 Mac 地址。 所以我的问题是如何找到 Mac 地址?每个用户的 Mac 地址都是唯一的。用户将下载该应用程序,然后他应该显示 MAC 地址,以便他可以使用相同的 MAC 地址从网站激活设备。所以我只想获取 MAC 地址,它对每个用户都是唯一的。

【问题讨论】:

  • this 能回答你的问题吗?
  • 你能帮帮我吗?
  • 你明白我的意思吗?我在看什么?
  • 我从问题中了解到的是,当用户下载您的应用程序时,您基本上想获取或显示mac地址,该地址将是他们各自设备的地址,对吗?

标签: android android-studio-3.0


【解决方案1】:

第 1 步:添加权限。在Manifest.xml 文件中添加以下行

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

第二步:创建获取MAC地址的方法

public String getMacAddress(){
        try{
            List<NetworkInterface> networkInterfaceList = Collections.list(NetworkInterface.getNetworkInterfaces());
            String stringMac = "";
            for(NetworkInterface networkInterface : networkInterfaceList){
                if(networkInterface.getName().equalsIgnoreCase("wlon0"));
                {
                    for(int i=0;i <networkInterface.getHardwareAddress().length; i++){
                        String stringMacByte = Integer.toHexString(networkInterface.getHardwareAddress()[i]& 0xFF);
                        if(stringMacByte.length()==1){
                            stringMacByte = "0" +stringMacByte;
                        }
                        stringMac += stringMacByte.toUpperCase() + ":";
                    } break;
                }
            }
            return stringMac;
        }catch (SocketException e)
        {
            e.printStackTrace();
        }
        return  "0";
    }

第三步:调用方法获取MAC地址

String mobile_mac_addres = getMacAddress();  //call the method that return mac address 
Log.d("MyMacIS",mobile_mac_address);  // this prints the MAC Address

【讨论】:

  • 这些不适用于 android 10,我正在寻找一种先进的方法
  • Developer.Android.com 的最新更新 不适用于 MAC 地址 MAC 地址是全球唯一的,用户不可重置,并且在恢复出厂设置后仍然有效。由于这些原因,一般不建议使用 MAC 地址进行任何形式的用户识别。运行 Android 10(API 级别 29)及更高版本的设备会向所有非设备所有者应用的应用报告随机 MAC 地址。
  • 在 Android 6.0(API 级别 23)和 Android 9(API 级别 28)之间,无法通过第三方 API 获得本地设备 MAC 地址,例如 Wi-Fi 和蓝牙。 WifiInfo.getMacAddress() 方法和 BluetoothAdapter.getDefaultAdapter().getAddress() 方法都返回 02:00:00:00:00:00。
  • 此外,在 Android 6.0 和 Android 9 之间,您必须拥有以下权限才能通过蓝牙和 Wi-Fi 扫描访问附近外部设备的 MAC 地址:方法/属性权限需要 ACCESS_FINE_LOCATION 或 ACCESS_COARSE_LOCATION跨度>
  • 这是来自 google 的文档
【解决方案2】:

以编程方式使用此代码获取macAddress

WifiManager wifiManager = (WifiManager)   getSystemService(Context.WIFI_SERVICE);
    WifiInfo wInfo = wifiManager.getConnectionInfo();
    String macAddress = wInfo.getMacAddress();

【讨论】:

  • 这些不适用于 android 10,我正在寻找一种先进的方法
猜你喜欢
  • 2015-01-23
  • 2017-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-09
  • 2015-01-21
  • 2011-08-28
相关资源
最近更新 更多