Java 防止欺骗位置

Java 防止欺骗位置,java,android,gps,location,Java,Android,Gps,Location,当用户的设备低于18 API时,是否有方法防止欺骗位置? 我尝试过使用以下代码,但当用户为: 1.在Android设置和活动假gps中启用模拟位置 2.在设置中禁用模拟位置(不暂停/停止假gps应用)->在这种情况下,我的应用仍然会获得假位置。 我的代码: if (isGPSEnabled) { locationManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, MIN

当用户的设备低于18 API时,是否有方法防止欺骗位置?

我尝试过使用以下代码,但当用户为:
1.在Android设置和活动假gps中启用模拟位置
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);
            }
        }
    }
}

从设置中禁用
启用模拟位置
选项是没有意义的,而且即使您从设备中删除模拟应用程序,模拟位置也将保持不变

解决方案:为给定提供商发出定位请求,并等待直到收到新位置