Issue
Hope you know that an application which is installed in an android device can be backed up and stored as an installable file(as an APK file) with the help of apps like Astro file manager. The same apk can be installed in the android simulator as well. So there is a chance that other can easily dig into the installed app's files like DB, shared preference, etc..
Is there any way to permit installing only in real device and not in simulators???
I know that if it is ROOTED device, we can access the app's data same like in the simulator. Even though i would like to know whether we can restrict installing apk in simulators.
Thanks in advance
Solution
Use this function:
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);
}
Therefor:
if (isEmulator()) {
// emulator
} else {
//not emulator
}
My recommendation:
try this from github.
Easy to detect android emulator
- Checked on real devices in Device Farm (https://aws.amazon.com/device-farm/)
- BlueStacks
- Genymotion
- Android Emulator
- Andy 46.2.207.0
- MEmu play
- Nox App Player
- Koplayer
- .....
How to use with an Example:
EmulatorDetector.with(this)
.setCheckTelephony(true)
.addPackageName("com.bluestacks")
.setDebug(true)
.detect(new EmulatorDetector.OnEmulatorDetectorListener() {
@Override
public void onResult(boolean isEmulator) {
}
});
Answered By - Saeed
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.