【发布时间】:2019-11-02 20:34:24
【问题描述】:
我有一个应用程序,我只想在物理设备上运行它,这意味着没有像 Android 模拟器这样的虚拟设备。如果用户尝试在模拟器上安装或运行它,它必须退出应用程序。请提供相同的限制逻辑。 TIA
【问题讨论】:
我有一个应用程序,我只想在物理设备上运行它,这意味着没有像 Android 模拟器这样的虚拟设备。如果用户尝试在模拟器上安装或运行它,它必须退出应用程序。请提供相同的限制逻辑。 TIA
【问题讨论】:
您可以使用此方法检查应用程序是否在android模拟器上运行。然后如果它在 android 模拟器上运行,您可以决定完成活动(或任何您决定)
fun isRunningOnEmulator(): Boolean {
var result = (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"))
if (result)
return true
result = result or (Build.BRAND.startsWith("generic") && Build.DEVICE.startsWith("generic"))
if (result)
return true
result = result or ("google_sdk" == Build.PRODUCT)
return result
}
如果这不起作用,你可能想试试这个库:
如果这个库是旧的,你可能想要检查这个也检测 nox 模拟器的 fork
【讨论】: