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

(原创不易,你们对阿超的赞就是阿超持续更新的动力!)

(以免丢失,建议收藏~~~)

-----------------------------------------------------------------------

获取设备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);
    }

获取APP应用程序名称

	/**
     * 获取APP应用程序名称
     */
	public static String getAppName(Context context) {
        try {
            PackageManager packageManager = context.getPackageManager();
            PackageInfo packageInfo = packageManager.getPackageInfo(
                    context.getPackageName(), 0);
            int labelRes = packageInfo.applicationInfo.labelRes;
            return context.getResources().getString(labelRes);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

获取设备名称

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

方案一

// build.gradle需要引入获取oaid库
compileOnly 'com.github.gzu-liyujiang:Android_CN_OAID:4.2.3'
public static String getOAID() {
		if (Build.VERSION.SDK_INT < 29) {
            return DeviceIdentifier.getIMEI(context));
        } else {
            return DeviceIdentifier.getOAID(context));
        }
    }

方案二

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

获取设备识别码

方案一

// build.gradle需要引入获取DeviceIdentifier类库
compileOnly 'com.github.gzu-liyujiang:Android_CN_OAID:4.2.3'
public static String getImei() {
        if (Build.VERSION.SDK_INT < 29) {
            return DeviceIdentifier.getOAID(context));
        } else {
            return DeviceIdentifier.getIMEI(context));
        }
    }

方案二

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;
    }

-----------------------------------------------------------------------

联系阿超

(可解疑解答,无偿)

阿超QQ:2425991616

阿超微信:2425991616

阿超邮箱:2425991616@qq.com || aboutgaojc@163.com

扫码添加阿超微信

在这里插入图片描述

扫码添加阿超QQ

在这里插入图片描述

欢迎关注阿超的公众号!

在这里插入图片描述

如果这篇文章帮助到了您,这里还可以打赏博主哦~m_m

在这里插入图片描述

在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是阿超

现在二师兄的肉比师父的都贵了.

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值