我试图对使用模拟位置来操纵我的应用的人设置一些保护。我意识到这是不可能的,以防止100%...我只是想尽我所能。检测模拟位置不工作(Android)
该应用程序在其主要活动中使用Google位置服务(播放服务的一部分)。
的onLocationChanged()方法是:
public void onLocationChanged(Location location) {
this.mCurrentLocation = location;
if (Build.VERSION.SDK_INT > 17 && mCurrentLocation.isFromMockProvider()) {
Log.i(TAG, "QQ Location is MOCK");
// TODO: add code to stop app
// otherwise, currently, location will never be updated and app will never start
} else {
Double LAT = mCurrentLocation.getLatitude();
Double LON = mCurrentLocation.getLongitude();
if ((LAT.doubleValue() > 33.309171) || (LAT.doubleValue() < 33.226442) || (LON.doubleValue() < -90.790165) || (LON.doubleValue() > -90.707081)) {
buildAlertMessageOutOfBounds();
} else if (waiting4FirstLocationUpdate) {
Log.i(TAG, "YYY onLocationChanged() determines this is the FIRST update.");
waiting4FirstLocationUpdate = false;
setContentView(R.layout.activity_main);
startDisplayingLists();
}
}
}
位置服务完美地工作,一切都很好,在一般的应用程序,但是当我在与Android工作室(Nexus One的API 23模拟器运行应用程序),我使用扩展控件(模拟),应用程序只是继续正常工作设置位置,因此它似乎条件:
if (Build.VERSION.SDK_INT > 17 && mCurrentLocation.isFromMockProvider())
是返回false。
这对我没有任何意义。有谁知道为什么会发生?
谢谢!
谢谢你这样一个很好的答案和所有的contibutions。顺便说一句,我在最后一分钟抛弃了谷歌播放服务(因为在尝试为我的应用实施“谷歌播放服务检查”之后,我意识到他们不处理谷歌播放服务/播放存储缺乏的情况 - 我的应用程序只会挂起,他们的指令很混乱,谷歌播放服务从用户的角度来看令人讨厌/令人毛骨悚然)。所以我正在实现一种超级基本的GPS方式。我可能会改变主意,但无论在哪种情况下,我都会在您的博客上阅读。 –
如果地理围栏的情况相同,该怎么办? –