Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)

68 篇文章 1 订阅

目录

获取设备id

获取ip地址

获取设备名称

获取设备型号

获取设备处理器

获取设备品牌

获取设备制造商

获取设备oaid

获取设备识别码

获取mac地址

获取应用包名

获取应用签名

获取app版本

获取版本号

获取分辨率

获取国家码

获取系统语言

获取设备网络代码

获取设备网络类型

获取android版本

获取操作系统版本

获取目标sdk版本号

获取应用第一次安装时间


获取设备id

public static String getDeviceId() {
        if (context == null) {
            return "";
        }
        return DeviceIdentifier.getAndroidID(context);
    }

获取ip地址

	public static String getIp() {
        String networkType = getNetworkType();
        if (networkType.equals("WiFi")) {
            WifiManager wifiManager = null;
            try {
                wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
                WifiInfo wifiInfo = wifiManager.getConnectionInfo();
                int i = wifiInfo.getIpAddress();
                return intToIp(i);
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        } else if (networkType.equals("2G") || networkType.equals("3G") || networkType.equals("4G")) {
            try {
                for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements(); ) {
                    NetworkInterface intf = en.nextElement();
                    for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) {
                        InetAddress inetAddress = enumIpAddr.nextElement();
                        if (!inetAddress.isLoopbackAddress()) {
                            return inetAddress.getHostAddress().toString();
                        }
                    }
                }
            } catch (Exception ex) {
                return null;
            }
        } else {
            return null;
        }
        return null;
    }

	/**
     * 将ip的整数形式转换成ip形式
     */
    public static String intToIp(int i) {
        return (i & 0xFF) + "." +
                ((i >> 8) & 0xFF) + "." +
                ((i >> 16) & 0xFF) + "." +
                (i >> 24 & 0xFF);
    }

获取设备名称

public static String getDeviceName() {
        return Build.DEVICE;
    }

获取设备型号

public static String getDeviceModel() {
        return Build.MODEL;
    }

获取设备处理器

public static String getDeviceBoard() {
        return Build.BOARD;
    }

获取设备品牌

public static String getDeviceBrand() {
        return Build.BRAND;
    }

获取设备制造商

public static String getDeviceManufacturer() {
        return Build.MANUFACTURER;
    }

获取设备oaid

public static String getOAID() {
        if (context == null) {
            return "";
        }
        if (DeviceID.supportedOAID(context)) {
            return DeviceID.getOAID();
        }
        return "";
    }

获取设备识别码

public static String getImei() {
        TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        if (tm == null) {
            return "";
        }
        return tm.getDeviceId();
    }

获取mac地址

public static String getMac() {
        if (context == null) {
            return "";
        }
        WifiManager wm = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
        WifiInfo wi = wm.getConnectionInfo();
        if (wi == null || wi.getMacAddress() == null) {
            return "";
        }
        return wi.getMacAddress().trim();
    }

获取应用包名

public static String getPackageName() {
        if (context == null) {
            return "";
        }
        return context.getPackageName();
    }

获取应用签名

public static String getAppSignature() {
        if (context == null) {
            return "";
        }
        byte[] cert = new byte[0];
        try {
            PackageInfo packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);
            cert = packageInfo.signatures[0].toByteArray();
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        return cert.toString();
    }

获取app版本

public static String getAppVersion() {
        if (context == null) {
            return "";
        }
        PackageManager pm = context.getPackageManager();
        PackageInfo pi = null;
        try {
            pi = pm.getPackageInfo(context.getPackageName(), 0);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        return pi.versionName;
    }

获取版本号

public static int getVersionCode() {
        if (context == null) {
            return 0;
        }
        PackageManager pm = context.getPackageManager();
        PackageInfo pi = null;
        try {
            pi = pm.getPackageInfo(context.getPackageName(), 0);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        return pi.versionCode;
    }

获取分辨率

public static String getResolution() {
        if (context == null) {
            return "";
        }
        DisplayMetrics dm = context.getResources().getDisplayMetrics();
        int widthPixels = dm.widthPixels;
        int heightPixels = dm.heightPixels;
        return widthPixels + "*" + heightPixels;
    }

获取国家码

public static String getCountry() {
        TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        if (tm == null) {
            return "";
        }
        return tm.getNetworkCountryIso();
    }

获取系统语言

public static String getLanguage() {
        return Locale.getDefault().getLanguage();
    }

获取设备网络代码

public static String getMccmnc() {
        TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        if (tm == null) {
            return "";
        }
        return tm.getNetworkOperator();
    }

获取设备网络类型

public static String getNetworkType() {
        ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        if (cm == null) {
            return "Unknown";
        }
        NetworkInfo activeNetInfo = cm.getActiveNetworkInfo();
        if (activeNetInfo == null || !activeNetInfo.isAvailable()) {
            return "Unknown";
        }
        NetworkInfo wifiInfo = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        if (wifiInfo != null) {
            NetworkInfo.State state = wifiInfo.getState();
            if (state != null && state == NetworkInfo.State.CONNECTED || state == NetworkInfo.State.CONNECTING) {
                return "WiFi状态";
            }
        }
        NetworkInfo networkInfo = cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
        if (networkInfo != null) {
            NetworkInfo.State state = networkInfo.getState();
            String subtypeName = networkInfo.getSubtypeName();
            if (state != null && state == NetworkInfo.State.CONNECTED || state == NetworkInfo.State.CONNECTING) {
                switch (activeNetInfo.getSubtype()) {
                    case TelephonyManager.NETWORK_TYPE_GPRS:
                    case TelephonyManager.NETWORK_TYPE_CDMA:
                    case TelephonyManager.NETWORK_TYPE_EDGE:
                    case TelephonyManager.NETWORK_TYPE_1xRTT:
                    case TelephonyManager.NETWORK_TYPE_IDEN:
                        return "2G";
                    case TelephonyManager.NETWORK_TYPE_EVDO_A:
                    case TelephonyManager.NETWORK_TYPE_UMTS:
                    case TelephonyManager.NETWORK_TYPE_EVDO_0:
                    case TelephonyManager.NETWORK_TYPE_HSDPA:
                    case TelephonyManager.NETWORK_TYPE_HSUPA:
                    case TelephonyManager.NETWORK_TYPE_HSPA:
                    case TelephonyManager.NETWORK_TYPE_EVDO_B:
                    case TelephonyManager.NETWORK_TYPE_EHRPD:
                    case TelephonyManager.NETWORK_TYPE_HSPAP:
                        return "3G";
                    case TelephonyManager.NETWORK_TYPE_LTE:
                        return "4G";
                    default:
                        if (subtypeName.equalsIgnoreCase("TD-SCDMA") || subtypeName.equalsIgnoreCase("WCDMA") || subtypeName.equalsIgnoreCase("CDMA2000")) {
                            return "3G";
                        }
                        return "Unknown";
                }
            }
        }
        return "Unknown";
    }

获取android版本

public static int getAndroidVersion() {
        return Build.VERSION.SDK_INT;
    }

获取操作系统版本

public static String getOsVersion() {
        return Build.VERSION.RELEASE;
    }

获取目标sdk版本号

public static int getTargetSdkVer() {
        if (context == null) {
            return 0;
        }
        return context.getApplicationInfo().targetSdkVersion;
    }

获取应用第一次安装时间

public static long getFirstInstallTime() {
        if (context == null) {
            return 0;
        }
        PackageManager pm = context.getPackageManager();
        PackageInfo packageInfo = null;
        try {
            packageInfo = pm.getPackageInfo(context.getPackageName(), 0);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        return packageInfo.firstInstallTime;
    }

转载于:Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..) - 码农教程 

  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
获取网络设备信息,需要使用系统提供的网络编程API,下面是一个简单的例子,可以获取本机的所有网络设备信息: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include <ifaddrs.h> #include <netinet/in.h> #include <arpa/inet.h> #include <net/if.h> int main() { struct ifaddrs *if_list; struct ifaddrs *if_node; char ip_addr[INET_ADDRSTRLEN]; char mac_addr[18]; int i, family, s; if (getifaddrs(&if_list) == -1) { perror("getifaddrs"); return -1; } i = 0; for (if_node = if_list; if_node != NULL; if_node = if_node->ifa_next) { if (if_node->ifa_addr == NULL) continue; family = if_node->ifa_addr->sa_family; if (family == AF_INET || family == AF_INET6) { s = getnameinfo(if_node->ifa_addr, (family == AF_INET) ? sizeof(struct sockaddr_in) : sizeof(struct sockaddr_in6), ip_addr, INET_ADDRSTRLEN, NULL, 0, NI_NUMERICHOST); if (s != 0) { printf("getnameinfo() failed: %s\n", gai_strerror(s)); return -1; } printf("%d: %s\n", ++i, if_node->ifa_name); printf(" IP address: %s\n", ip_addr); if (family == AF_PACKET) { struct sockaddr_ll *sll = (struct sockaddr_ll*)if_node->ifa_addr; int j; for (j = 0; j < 6; j++) { sprintf(mac_addr + 3 * j, "%02X:", (unsigned char)sll->sll_addr[j]); } mac_addr[17] = '\0'; printf(" MAC address: %s\n", mac_addr); } } } freeifaddrs(if_list); return 0; } ``` 这个程序会遍历所有的网络设备,并输出设备名称IP地址MAC地址。其中,`getifaddrs()`函数可以获取当前主机的所有网络接口的信息,返回的是一个链表,每个节点代表一个网络接口。对于每个节点,可以通过`ifa_name`字段获取接口名称,通过`ifa_addr`字段获取接口地址,然后根据地址类型进行不同的处理。如IPv4地址和IPv6地址可以通过`inet_ntop()`函数将二进制地址转换成字符串形式,而MAC地址需要通过`sll_addr`字段获取

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值