希望您知道安装在 Android 设备中的应用程序可以在 Astro 文件管理器等应用程序的帮助下备份并存储为可安装文件(作为 APK 文件)。同样的apk也可以安装在android模拟器中。因此,其他人有可能很容易地挖掘已安装应用程序的文件,如数据库、共享首选项等。
有没有办法只允许在真实设备上安装而不允许在模拟器上安装???
我知道如果它是 ROOTED 设备,我们可以像在模拟器中一样访问应用程序的数据。尽管我想知道我们是否可以限制在模拟器中安装 apk。
提前致谢
最佳答案
使用这个函数:
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);
}
因此:
if (isEmulator()) {
// emulator
} else {
//not emulator
}
我的建议:
尝试 this来自 github。
易于检测android模拟器
- 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
- .....
如何使用示例:
EmulatorDetector.with(this)
.setCheckTelephony(true)
.addPackageName("com.bluestacks")
.setDebug(true)
.detect(new EmulatorDetector.OnEmulatorDetectorListener() {
@Override
public void onResult(boolean isEmulator) {
}
});
关于android - 如何限制 APK 不安装在 Android 模拟器/模拟器中,而是安装在真实设备中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16213326/