1

I am trying to block my app from running on emulators but i dont know how to block it from running on bluestacks. This is what i have tried .

            || Build.FINGERPRINT.startsWith("generic")
            || Build.FINGERPRINT.startsWith("unknown")
            || Build.HARDWARE.contains("goldfish")
            || Build.HARDWARE.contains("ranchu")
            || Build.MODEL.contains("google_sdk")
            || Build.MODEL.contains("Emulator")
            || Build.MODEL.contains("Android SDK built for x86")
            || Build.MANUFACTURER.contains("Genymotion")
            || Build.PRODUCT.contains("sdk_google")
            || Build.PRODUCT.contains("google_sdk")
            || Build.PRODUCT.contains("sdk")
            || Build.PRODUCT.contains("sdk_x86")
            || Build.PRODUCT.contains("vbox86p")
            || Build.PRODUCT.contains("emulator")
            || Build.PRODUCT.contains("simulator")
            || Build.MANUFACTURER.contains("CMDC")
            || Build.MANUFACTURER.contains("BlueStacks")
Phantômaxx
  • 37,901
  • 21
  • 84
  • 115
IplayPC
  • 41
  • 1
  • 4
  • Possible duplicate of [How can I detect when an Android application is running in the emulator?](https://stackoverflow.com/questions/2799097/how-can-i-detect-when-an-android-application-is-running-in-the-emulator) – Ricardo A. Oct 10 '19 at 15:02
  • @RicardoA.None of them works on bluestacks. thats why i asked specifically – IplayPC Oct 10 '19 at 15:12

1 Answers1

0
TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
String networkOperator = tm.getNetworkOperatorName();
if("Android".equals(networkOperator)) {
    // Emulator
}
else {
    // Device
}

Emulator does not have sim card so it will returns empty string: " " when executing above code. Whereas Android always returns "Android" as network operator, This might help.

Answerd by J J Kiim

reference -

https://stackoverflow.com/a/6577813/9024123

https://stackoverflow.com/a/35896310/9024123

Rohit Chauhan
  • 1,119
  • 1
  • 12
  • 30