2016-12-30 203 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選項將沒有意義甚至還可以從您的設備中刪除嘲笑者的應用程序,模擬位置將被保留。

解決方法:使對於給定的供應商和等待位置請求,直到接收到新的位置