2012-07-11 158 views
10

我有一個應用程序使用網絡提供商的位置。每次啓動應用程序時,它都會檢查LocationManager中是否使用isProviderEnabled()方法啓用網絡提供程序。如果返回false,則向用戶提供一條警報,以啓用網絡提供程序,然後使用該應用程序。這種邏輯運行得非常好,除了少數例外與非谷歌認證的設備(不擔心,因爲他們通常沒有Maps API)。最近,在ICS上的一些設備上,現在在JellyBean仿真器上,即使啓用了isProviderEnabled(),我也會得到一致的「false」。Android LocationManager.isProviderEnabled()總是返回假

我已經轉移到使用從 返回的字符串Settings.Secure.getString(getContentResolver(),Settings.Secure.LOCATION_PROVIDERS_ALLOWED))來查看它是否包含「network」。這是一個黑客,但它現在正在工作。我很想能夠使用isProviderEnabled()方法。

有沒有人看過這個問題?

+2

我也面臨這個問題!你有任何的解決辦法嗎? – gkris 2012-07-19 00:32:56

回答

0

從已API文檔:LocationManager.GPS_PROVIDER

這提供者確定使用衛星位置。根據 條件,此提供程序可能需要一段時間才能返回定位修復。 需要權限ACCESS_FINE_LOCATION。

所以,如果你不需要ACCESS_FINE_LOCATION它將返回false。

0

@naqi @gkris 我也注意到這個問題,isProviderEnabled(LocationManager.GPS_PROVIDER)返回false
解決這也讓用戶設置Location MethodHigh Accuracy而不是Battery SavingDevice Only

此設置下的位置設置可用,並且有不同的設備上不同的名稱。在我所測試的一些設備,這個設置是名ModeLocation ModeLocation Method等也值可以High AccuracyGPSGPS, Wifi and Mobile Networks

開發人員必須培訓用戶這一點。

相關問題