如果您正在檢查位置是否打開,或者無論它是否使用GPS,那麼您必須注意以下情況,因爲它是我的情況,在設備位置設置中,定位方法已設置爲BatterySaving模式,其中,所述設備僅使用無線網絡的移動網絡來估計位置:
因此,GPS甚至沒有在更新位置使用,所以位置圖標不會出現在狀態除了位置提供商之外,酒吧將被列爲網絡不是GPS。
所以,要解決這個問題,你必須檢查提供商是否包含gps
或包含network
:
private boolean checkIfLocationOpened() {
String provider = Settings.Secure.getString(getActivity().getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
if (provider.contains("gps") || provider.contains("network"))
return true;
}
// otherwise return false
return false;
}
,如果你想使用LocationManager
做到這一點:
private boolean checkIfLocationOpened() {
final LocationManager manager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE);
if (manager.isProviderEnabled(LocationManager.GPS_PROVIDER) || manager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){
return true;
}
// otherwise return false
return false;
}
我使用了部分代碼。這'如果'返回真實值 – Lau
乾杯..它爲我工作。 –
他們之所以使用Settings.Secure會比LocationManager.isProviderEnabled返回更好的結果嗎?我問,因爲它似乎在某些設備isProvderEnabled不能按預期工作... – Gyome