仅在物理设备而非模拟器上运行 Android 应用

msj*_*msj 2 android emulation adb android-emulator

如何让我的应用程序仅在物理 android 设备上运行,而不是在模拟器上运行。

当应用程序启动时,我想检查设备是物理设备还是模拟器。如果它是一个模拟器,我希望我的应用程序停止。

我怎样才能做到这一点?

Ted*_*opp 5

onCreate()启动活动的方法中,您可以检查设备是否正在模拟器上运行,如果是,只需调用finish(). 要检查您是否在模拟器上运行,您可以使用类似以下代码的内容(取自此答案):

public static boolean isEmulator() {
    return Build.FINGERPRINT.startsWith("generic")
            || Build.FINGERPRINT.startsWith("unknown")
            || Build.MODEL.contains("google_sdk")
            || Build.MODEL.contains("Emulator")
            || Build.MODEL.contains("Android SDK built for x86")
            || Build.MANUFACTURER.contains("Genymotion")
            || (Build.BRAND.startsWith("generic") && Build.DEVICE.startsWith("generic"))
            || "google_sdk".equals(Build.PRODUCT);
}
Run Code Online (Sandbox Code Playgroud)

您可以在网络上找到许多其他建议来检测模拟器环境。我不知道任何绝对万无一失的,但上面的内容非常强大。