android.os.Build.BRAND:获取设备品牌

如果获取的Landroid/os/Build;->BRAND的值为 "generic"则为模拟器上运行。

android.os.Build.MODEL :获取手机的型号 设备名称。

如果发现Landroid/os/Build;->MODEL 为"sdk",则为模拟器上运行。

代码示例:

     const-string v0, "phone"

     invoke-virtual {p0, v0}, Lcom/xxx/LoadingActivity;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;

     move-result-object v0

     check-cast v0, Landroid/telephony/TelephonyManager;

     invoke-virtual {v0}, Landroid/telephony/TelephonyManager;->getSubscriberId()Ljava/lang/String;

     sget-object v0, Landroid/os/Build;->BRAND:Ljava/lang/String;

     invoke-virtual {v0}, Ljava/lang/String;->toLowerCase()Ljava/lang/String;

     move-result-object v0

     const-string v1, "generic"

     invoke-virtual {v0, v1}, Ljava/lang/String;->indexOf(Ljava/lang/String;)I

     move-result v0

     const/16  v0, -1

     if-eq v0, v2, :cond_0

     sget-object v0, Landroid/os/Build;->MODEL:Ljava/lang/String;

     invoke-virtual {v0}, Ljava/lang/String;->toLowerCase()Ljava/lang/String;

     move-result-object v0

     const-string v1, "sdk"

     invoke-virtual {v0, v1}, Ljava/lang/String;->indexOf(Ljava/lang/String;)I

     move-result v0

     if-eq v0, v2, :cond_0

     invoke-virtual {p0}, Lcom/xxx/LoadingActivity;->finish()V

     :cond_0
iget-object v0, p0, Lcom/xxx/LoadingActivity;->b:Landroid/content/SharedPreferences; invoke-interface {v0}, Landroid/content/SharedPreferences;->edit()Landroid/content/SharedPreferences$Editor;

以下信息可以被用来判断是否在模拟器上运行

模拟器输出的信息
 C:\Users\dell>adb shell getprop

 [ro.kernel.qemu]:[1]
[ro.hardware]:[goldfish]
[ro.build.tags]:[test-keys]
[ro.product.model]:[sdk]
[ro.product.brand]:[generic]
[ro.product.name]:[sdk]
[ro.product.device]:[generic]
[ro.product.board]:[]
[ro.product.manufacturer]:[unknown]
[ro.board.platform]:[]
[ro.build.product]:[generic]
[ro.build.fingerprint]:[generic/sdk/generic:2.3.1/GSI11/93351:eng/test-keys]

如何判断Android设备是否为模拟器的更多相关文章

  1. 【Android】Android 代码判断当前设备是否为模拟器

    [Android]Android 代码判断当前设备是否为模拟器 方法比较简单,直接粘贴代码 //判断当前设备是否是模拟器.如果返回TRUE,则当前是模拟器,不是返回FALSE public stati ...

  2. 如何判断Android设备是手机还是平板?

    转自:http://blog.csdn.net/zuolongsnail/article/details/8682950 Android开发需要适配手机和平板,有些需求在实现中就要判断设备是手机还是平 ...

  3. Android获取屏幕实际高度跟显示高度,判断Android设备是否拥有虚拟功能键

    //获取屏幕尺寸,不包括虚拟功能高度 getWindowManager().getDefaultDisplay().getHeight(); 获取屏幕原始尺寸高度,包括虚拟功能键高度, private ...

  4. HCE:Host-based Card Emulation基于Android设备的卡片模拟器

    HCE技术支持提供了一个软实现SE的通路,Service实现的方式很多,可以使用文件,使用网络,甚至连接真正的SE.支持HCE的测试手机:目前可以确定使用了NXP PN547作为CLF的NFC手机已经 ...

  5. bat如何创建多级文件夹(在android设备中)

    在android设备中要创建多个或者多级文件夹时,手动去创建费时费力(有点傻),一个bat文件就能很好的实现这个功能. 1.首先创建同级多个文件夹且在该文件夹下生成一个文件 @echo off ech ...

  6. Android 编程下判断当前设备是手机还是平板

    /** * 判断当前设备是手机还是平板,代码来自 Google I/O App for Android * @param context * @return 平板返回 True,手机返回 False ...

  7. Android判断当前的android设备是否处于联网状态

    首先,要想获得当前android设备是否处于联网状态,那么android本身给我们提供了一个服务 private ConnectivityManager connectivityManager;//用 ...

  8. Android 判断当前设备是手机还是平板

    Android开发需要适配手机和平板,有些需求实现时就要求判断设备是手机还是平板.网上很多说通过设备尺寸.DPI.版本号.是否具备电话功能等进行判断,不过都不算太精确.这里分享一个简洁给力的方法(官方 ...

  9. Android设备唯一性判断

    前段时间项目需要一个功能,就是在操作完某一个逻辑之后返回给客户一个红包,安全校验团队需要我们提供android设备的唯一标示,起初直接通过获取设备的imei号传给了server端,后台公司云迹监控发现 ...

随机推荐

  1. Android Dragger2快速入门浅析

    定Dagger2的基本介绍:dagger2是一个依赖注入框架,在编译期间自动生成代码,负责依赖对象的创建. 使用Dagger2的好处:为了进一步解耦和方便测试,我们会使用依赖注入的方式构建对象 (不使 ...

  2. Angular调用父Scope的函数

    app.directive('toggle', function(){ return { restrict: 'A', template: '<a ng-click="f()" ...

  3. AOP编程 - 淘宝京东网络处理

    现象描述 当我们打开京东 app 进入首页,如果当前是没有网络的状态,里面的按钮点击是没有反应的.只有当我们打开网络的情况下,点击按钮才能跳转页面,按照我们一般人写代码的逻辑应该是这个样子: /** ...

  4. android中checkbox自定义样式

    1.首先res/drawable中定义checkbox_style.xml样式: <?xml version="1.0" encoding="utf-8" ...

  5. JMeter安装+配置+运行

    环境配置: 操作系统:Win7系统 jdk版本:1.8 JMeter版本:3.0 一  JMeter的安装配置过程 JMeter是100%纯java应用程序,它在任何支持完整java实现的系统上都能正 ...

  6. pip 设置国内源

    最近使用 pip 安装包,动辄十几 k 甚至几 k 的下载速度,确实让人安装的时候心情十分不好.所以还是要给 pip 换一个国内的源.可以显著的提升安装速度.有更多的时间来研究算法. 下面,列一下收集 ...

  7. python基础学习8----文件基本操作

    一.文件的打开,open函数 f = open(file_name,mode)#创建文件对象 打开模式有很多种 1. 'r': 以只读方式打开文件.文件的指针将会放在文件的开头.这是默认模式. 2. ...

  8. Linux 修改root密码(忘记密码后)

    重置密码(一) 背景: 本文基于虚拟机的RHEL6.6版本  RHEL7与此略有不同 重新启动Linux系统 进入如下后界面,再按e键 3. 进入如下界面后,使用键盘上的上下键,选中第二项以kerne ...

  9. Linux启动一个服务后,服务的某个文件所在的目录下出现类似:systemd-private.xxxxxx的目录

    Linux的目录下面形如: [root@:vg_adn_tidbCkhsTest:172.31.17.203 /var/lib/mysql]#ll /tmp total drwxr root root ...

  10. Servlet 核心接口

    在Servlet体系结构中,除了用于实现Servlet的Servlet接口.GenericServlet类和HttpServlet类外,还有一些辅助Servlet获取相关资源信息的重要接口,了解这些接 ...