判断android应用是否运行在模拟器中

有下面几种方法:

  1. 依赖android.os.Build中的信息。如果使用普通的android sdk,那么 Build.PRODUCT == "sdk";如果使用了 google api sdk,那么 Build.PRODUCT == 'google_sdk'

  2. 模拟器中 Settings.Secure.ANDROID_ID == "", 但在android 2.2 中有个bug,所有设备的 android_id 都是 9774d56d682e549c

综合两种方式,代码如下:

public boolean isEmulator() {
    String android_id = Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID);
    Log.d("ares","ANDROID_ID: "+android_id);
    Log.d("ares","Build.PRODUCT: "+Build.PRODUCT); 
    boolean emulator = TextUtils.isEmpty(android_id) || "google_sdk".equals( Build.PRODUCT ) || "sdk".equals(Build.PRODUCT);            
    return emulator;
}

参考资源

Comments