2011-10-21 36 views
1

我遇到了模擬位置提供程序的問題。我有一個應用程序需要獲得準確的有效位置,我不希望用戶能夠欺騙他們。所以我有一個檢查模擬位置啓用設置,這工作正常。Android模擬位置提供程序未從LocationManager清除

但是,位置提供商存在問題。如果您啓用模擬位置,請使用gps faker應用設置位置,然後禁用模擬位置和所有其他位置提供商,位置管理器仍會引用模擬位置提供商。因此,儘管模擬位置被禁用,位置管理器告訴我gps已啓用,並提供模擬位置數據。

我知道,你可以從位置管理器清除測試提供商,但模擬地點必須能夠做到這一點

有誰碰到過這樣的,或有一個變通?

+0

你找到一種方法來去除參考,如果模擬位置被禁用? – DiogoNeves

回答

3

想我找到一種方式來獲得準確的讀數GPS /網絡服務提供者是否啓用與否:

ContentResolver contentResolver = context.getContentResolver(); 
boolean gpsEnabled = Settings.Secure.isLocationProviderEnabled(contentResolver, LocationManager.GPS_PROVIDER); 
boolean networkEnabled = Settings.Secure.isLocationProviderEnabled(contentResolver, LocationManager.NETWORK_PROVIDER); 
1

你確定你叫:

  • removeUpdates()
  • removeTestProvider()
  • setTestProviderEnabled()
  • clearTestProviderEnabled()

看看如何LocationManagerTest這樣做。

// disable mocking. 
Settings.Secure.putString(getContentResolver(), 
     Settings.Secure.ALLOW_MOCK_LOCATION, "0"); 
+0

調用這些方法的問題是,您需要啓用模擬位置才能工作..我想我可以在我的活動的onResume中清除位置管理器,但我不想讓用戶討厭啓用模擬位置。 – Theblacknight

+0

您可以靜默啓用和禁用此設置,請參閱我的編輯。 – Reno

+1

哦,冷靜..當我有機會的時候會試試這個。沒想到你可以禁用像這樣的系統設置.. – Theblacknight

相關問題