您现在的位置是:首页 > 正文

Android获取手机设备信息并区分真机与模拟器

2024-01-25 18:29:58阅读 20

有些时候我们不想App在模拟器上被别人使用,所以我们禁止在模拟器上使用App

判断是否为真机:
根据以下四图,我们可以对真机与模拟器来做一个简单区分:
如果Serial码为unkonwn或者android 则肯定是模拟器了.这里我只是做了官方模拟器与夜神模拟器的检测,其它模拟器暂时没有做测试.

     /**
     * 功能描述:判断当前设备是否为模拟器
     * 参数:
     */
    public static boolean isEmulator() {
        //获取手机的Serial码
        String serial = Build.SERIAL;
        if (serial.equalsIgnoreCase("unknown") || serial.equalsIgnoreCase("android")) {
            return true;
        }
        return false;
    }

官方模拟器
官方模拟器

夜神模拟器
夜神模拟器

无卡LG5X真机
无卡真机

有卡LG5X真机
有卡真机

获取手机设备的一些信息:

        StringBuilder sb = new StringBuilder();

        //获取手机的Serial码
        String serial = Build.SERIAL;
        sb.append("Serial码:").append(serial).append("\n");

        //获取手机的android_id号
        String androidId = Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID);
        sb.append("Android_id:").append(androidId).append("\n");

        //获取手机的Mac地址
        WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
        WifiInfo info = wifiManager.getConnectionInfo();
        String macAddress = info.getMacAddress();
        sb.append("MAC Address:").append(macAddress).append("\n");

        Context context = getWindow().getContext();
        TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        //获取手机的设备Id
        String deviceId = telephonyManager.getDeviceId();
        sb.append("DeviceId:").append(deviceId).append("\n");

        //获取手机号
        String phoneNumber = telephonyManager.getLine1Number();
        sb.append("phoneNumber:").append(phoneNumber).append("\n");

        //获取手机的运营商
        String ProvidersName = "N/A";
        try {
            String IMSI = telephonyManager.getSubscriberId();
            // IMSI号前面3460是国家,紧接着后面200 02是中国移动,01是中国联通,03是中国电信。
            System.out.println(IMSI);
            if (IMSI.startsWith("46000") || IMSI.startsWith("46002")) {
                ProvidersName = "中国移动";
            } else if (IMSI.startsWith("46001")) {
                ProvidersName = "中国联通";
            } else if (IMSI.startsWith("46003")) {
                ProvidersName = "中国电信";
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        sb.append("运营商:").append(ProvidersName).append("\n");

        return sb.toString();

网站文章

  • 【java基础】——java虚拟机HotSpot

    【java基础】——java虚拟机HotSpot

    一、前言 在自己电脑上输入java -version时出来:Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode),不知道是啥意思。查阅资料发现HotSpot是java的虚拟机。把前因后果写在下边。 二.、HotSpot历史 SUN的JDK版本从1.3.1开始运用HotSpot虚拟机, 20...

    2024-01-25 18:29:51
  • 使用Python进行健身手表数据分析

    使用Python进行健身手表数据分析

    这就是如何使用Python进行健身数据分析。Fitness Watch数据分析是健康和保健领域企业的重要工具。通过分析健身可穿戴设备的用户数据,公司可以了解用户行为,提供个性化的解决方案,并有助于改善用户的整体健康和福祉。

    2024-01-25 18:29:23
  • AI技术:重塑工作与生活的未来

    AI技术:重塑工作与生活的未来

    欢迎关注“智能领航者”!在我们的首篇文章中,我们将带您了解人工智能(AI)领域的发展历程、核心技术及其在现实生活中的应用。通过一起探索AI如何改变我们的未来,我们期待与您共同揭开AI技术的神秘面纱。让我们一起关注AI的进步,拥抱智慧未来!

    2024-01-25 18:29:17
  • Android入门(一) IDEA上创建Android应用之helloworld

    Android入门(一) IDEA上创建Android应用之helloworld

    Android入门(一) IDEA上创建Android应用之helloworld首先看运行结果:一、准备工作下载安装IntelliJ IDEA :我这里用的是2018.2.7下载安装Genymotion下载安装Gradle管理工具二、配置环境1.配置Jdk (略)2.配置Sdk3.配置GradleA.首先安装Gradle1.下载:前往 https://gradle...

    2024-01-25 18:29:10
  • 别了!我的大学!!

    就毕业了。。终于毕业了。。就这样毕业了。。哎!已经毕业了。。在2010年6月29日,也就是我农历生日的前一天,大学毕业了!!我不知道是不是上天故意要安排在这天毕业,也不知道到底这样的巧合有什么样的意义...

    2024-01-25 18:29:04
  • redis五种常用数据类型

    redis五种常用数据类型

    ​ Redis是一种开源(采用BSD许可证)、用作数据库、缓存、消息代理和流式引擎的内存数据结构存储系统。Redis提供了诸如字符串、哈希表、列表、集合、带范围查询的有序集合、位图、HyperLog...

    2024-01-25 18:28:39
  • Alpha测试与Beta测试

    粗略说一下Alpha测试与beta测试 1.Alpha测试   α测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试。α测试的目的是评价软件产品的功能、局域化...

    2024-01-25 18:28:32
  • python关机指令_ubuntu关机、重启、注销命令行指令

    转载http://blog.sina.com.cn/s/blog_7187e24301011pqe.html1关机命令 shutdown好像ubuntu的终端中默认的是当前用户的命令,只是普通用户,因...

    2024-01-25 18:28:25
  • 使用 Docker 高效搭建本地开发环境(详细教程)

    使用 Docker 高效搭建本地开发环境(详细教程)

    点击关注公众号,利用碎片时间学习本地开发之痛苦在开发之前,首先你需要安装各种开发工具和服务支持到你的开发环境当中,可能会出依赖问题,环境变量问题,端口冲突,经编译库问题等等。开发途中,可能你又需要依赖一些其他的服务,你最好祈祷不会出问题,可能你又要重写来配置你的环境,因为你的所有的依赖服务都在你的唯一的工作空间里面。如果你的伙伴的操作系统不统一,可能你还会遇到一些不同元字...

    2024-01-25 18:27:59
  • prometheus监控JAVA应用(JVM等)并自定义监控指标

    prometheus监控JAVA应用(JVM等)并自定义监控指标

    prometheus监控JAVA应用(JVM等)并自定义监控指标主体思路将Nacos伪装成Consul快速开始在Spring Cloud Gateway引入jar包Prometheus配置在每个Spr...

    2024-01-25 18:27:51