zoukankan      html  css  js  c++  java
  • Android 获取手机(ios,android)的设备唯一码(mac地址, IMEI)

    {

     /////https://github.com/vieux/OpenUDID

    /*
    获取手机(ios,android)的设备唯一码(mac地址, IMEI)
    2018年02月16日 ⁄ 综合 ⁄ 共 2697字 ⁄ 字号 小 中 大 ⁄ 评论关闭

    app中总会用到客户端下载量数据统计,一般都是用的设备的唯一码作为标示,以下是获取mac地址的代码片段,记录备份。


    android 获取mac地址


    1. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE">

    2. private String getLocalMacAddress(){

    WifiManager wifi = (WifiManager)getSystemService(Context.WIFI_SERVICE);

    WifiInfo info = wifi.getConnectionInfo();

    return info.getMacAddress();

    }


    android 获取IMEI数据


    public static String getIMEI(Context context) {

    return ((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId();

    }


    ios 获得mac地址


    +(NSString *)getLocalMacAddress

    {

    int                    mib[6];

    size_t                len;

    char                *buf;

    unsigned char        *ptr;

    struct if_msghdr    *ifm;

    struct sockaddr_dl    *sdl;

    mib[0] = CTL_NET;

    mib[1] = AF_ROUTE;

    mib[2] = 0;

    mib[3] = AF_LINK;

    mib[4] = NET_RT_IFLIST;

    if ((mib[5] = if_nametoindex("en0")) == 0) {

    //printf("Error: if_nametoindex error/n");

    return NULL;

    }

    if (sysctl(mib, 6, NULL, &len, NULL, 0) < 0) {

    //printf("Error: sysctl, take 1/n");

    return NULL;

    }

    if ((buf = malloc(len)) == NULL) {

    //printf("Could not allocate memory. error!/n");

    return NULL;

    }

    if (sysctl(mib, 6, buf, &len, NULL, 0) < 0) {

    //printf("Error: sysctl, take 2");

    return NULL;

    }

    ifm = (struct if_msghdr *)buf;

    sdl = (struct sockaddr_dl *)(ifm + 1);

    ptr = (unsigned char *)LLADDR(sdl);

    // NSString *outstring = [NSString stringWithFormat:@"%02x:%02x:%02x:%02x:%02x:%02x", *ptr, *(ptr+1), *(ptr+2), *(ptr+3), *(ptr+4), *(ptr+5)];

    NSString *outstring = [NSString stringWithFormat:@"%02x%02x%02x%02x%02x%02x", *ptr, *(ptr+1), *(ptr+2), *(ptr+3), *(ptr+4), *(ptr+5)];

    free(buf);

    return [outstring uppercaseString];

    }

    ios获取时候所需包含的头文件

    #include<sys/socket.h>

    #include<sys/sysctl.h>
    #include<net/if.h>
    #include <net/if_dl.h>

    - (NSString *) macaddress{

       int                mib[6];
       size_t             len;
       char               *buf;
        unsignedchar      *ptr;
        structif_msghdr   *ifm;
        structsockaddr_dl  *sdl;

        mib[0] =CTL_NET;
        mib[1] =AF_ROUTE;
        mib[2] =0;
        mib[3] =AF_LINK;
        mib[4] =NET_RT_IFLIST;

        if ((mib[5]= if_nametoindex("en0")) == 0) {
           printf("Error: if_nametoindex errorn");
           return NULL;
        }

        if(sysctl(mib, 6, NULL, &len, NULL, 0)< 0) {
           printf("Error: sysctl, take 1n");
           return NULL;
        }

        if ((buf =malloc(len)) == NULL) {
           printf("Could not allocate memory. error!n");
           return NULL;
        }

        if(sysctl(mib, 6, buf, &len, NULL, 0)< 0) {
           printf("Error: sysctl, take 2");
           free(buf);
           return NULL;
        }

        ifm =(struct if_msghdr *)buf;
        sdl =(struct sockaddr_dl *)(ifm + 1);
        ptr =(unsigned char *)LLADDR(sdl);
        NSString*outstring = [NSString stringWithFormat:@"X:X:X:X:X:X",
                              *ptr, *(ptr+1), *(ptr+2), *(ptr+3), *(ptr+4), *(ptr+5)];
       free(buf);

        returnoutstring;
    }
    - (NSString *)getMacAddress
    {
    */

    }

  • 相关阅读:
    js遍历不要使用index 而是使用id(数据唯一表示)
    eureka
    Mybatis-plus自动填充字段的值(如createTime,UpdateTime)
    计算机网络入门
    操作系统入门
    计算机组成原理入门
    《事实》读书笔记
    推荐算法入门
    源码编译安装apache2.4脚本
    Mycat实现读写分离
  • 原文地址:https://www.cnblogs.com/YZFHKMS-X/p/12067245.html
Copyright © 2011-2022 走看看