Skip to content

Commit 717dbfc

Browse files
authored
Support for Android emulator detection (#3703)
* Support for Android emulator detection Based on question from https://stackoverflow.com/questions/76238600/how-to-restrict-cn1-app-from-running-on-android-studio-emulator
1 parent efa3239 commit 717dbfc

File tree

1 file changed

+33
-2
lines changed

1 file changed

+33
-2
lines changed

Ports/Android/src/com/codename1/impl/android/AndroidImplementation.java

+33-2
Original file line numberDiff line numberDiff line change
@@ -2825,8 +2825,36 @@ public String getAppArg() {
28252825
}
28262826
return null;
28272827
}
2828-
2829-
2828+
2829+
// taken from https://stackoverflow.com/a/70380413/756809
2830+
private boolean isRunningOnAndroidStudioEmulator() {
2831+
return Build.FINGERPRINT.startsWith("google/sdk_gphone")
2832+
&& Build.FINGERPRINT.endsWith(":user/release-keys")
2833+
&& Build.MANUFACTURER == "Google" && Build.PRODUCT.startsWith("sdk_gphone") && Build.BRAND == "google"
2834+
&& Build.MODEL.startsWith("sdk_gphone");
2835+
}
2836+
2837+
// taken from https://stackoverflow.com/a/57960169/756809
2838+
private boolean isEmulator() {
2839+
return isRunningOnAndroidStudioEmulator() ||
2840+
((Build.BRAND.startsWith("generic") && Build.DEVICE.startsWith("generic"))
2841+
|| Build.FINGERPRINT.startsWith("generic")
2842+
|| Build.FINGERPRINT.startsWith("unknown")
2843+
|| Build.HARDWARE.contains("goldfish")
2844+
|| Build.HARDWARE.contains("ranchu")
2845+
|| Build.MODEL.contains("google_sdk")
2846+
|| Build.MODEL.contains("Emulator")
2847+
|| Build.MODEL.contains("Android SDK built for x86")
2848+
|| Build.MODEL.contains("VirtualBox")
2849+
|| Build.MANUFACTURER.contains("Genymotion")
2850+
|| Build.PRODUCT.contains("sdk_google")
2851+
|| Build.PRODUCT.contains("google_sdk")
2852+
|| Build.PRODUCT.contains("sdk")
2853+
|| Build.PRODUCT.contains("sdk_x86")
2854+
|| Build.PRODUCT.contains("vbox86p")
2855+
|| Build.PRODUCT.contains("emulator")
2856+
|| Build.PRODUCT.contains("simulator"));
2857+
}
28302858

28312859

28322860
/**
@@ -2907,6 +2935,9 @@ public String getProperty(String key, String defaultValue) {
29072935
if("DeviceName".equals(key)) {
29082936
return "" + android.os.Build.MODEL;
29092937
}
2938+
if("Emulator".equals(key)) {
2939+
return "" + isEmulator();
2940+
}
29102941
/*try {
29112942
if ("IMEI".equals(key) || "UDID".equals(key)) {
29122943
if(!checkForPermission(Manifest.permission.READ_PHONE_STATE, "This is required to get the device ID")){

0 commit comments

Comments
 (0)