当用户的设备低于18个API时,有没有办法防止欺骗位置?
我尝试使用以下代码,但是当用户为:
时它不起作用1.在Android设置中启用模拟位置和主动假GP
2.在设置中禁用模拟位置(无暂停/停止假GPS应用程序) ->在这种情况下,我的应用程序仍然会获得假位置。
我的代码:
if (isGPSEnabled) {
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
MIN_TIME_BW_UPDATES,
MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
if (locationManager != null) {
location = locationManager
.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if(location != null){
if(android.os.Build.VERSION.SDK_INT >= 18)
isMock = location.isFromMockProvider();
else
isMock = !Settings.Secure.getString(mContext.getContentResolver(), Settings.Secure.ALLOW_MOCK_LOCATION).equals("0");
if(!isMock){
latitude = location.getLatitude();
longitude = location.getLongitude();
prefs.setMockProvider(false);
}else{
prefs.setMockProvider(true);
}
}
}
}
从设置中禁用enable mock locations
选项是没有意义的,即使您从设备中删除模拟应用程序,模拟位置也将被持续。
解决方案:提出给定提供商的位置请求,等待直到收到新的位置