2016-12-30 99 views
0

当用户的设备低于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); 
      } 
     } 
    } 
} 

回答

0

禁止从设置enable mock locations选项将没有意义甚至还可以从您的设备中删除嘲笑者的应用程序,模拟位置将被保留。

解决方法:使对于给定的供应商和等待位置请求,直到接收到新的位置