位置返回null LocationManager.getlastlocation Gps Provider

时间:2016-03-05 16:35:42

标签: android gps google-maps-android-api-2

我已经搜索并实施了各种方式来获取我的位置。但无论我做什么,位置始终为空。它是空的。我的应用程序几乎已经完成,这是我唯一能解决问题的问题。

    public Location getlocation() {
    Location loc = null;
    LocationManager lm = (LocationManager) getContext().getSystemService(Context.LOCATION_SERVICE);
    if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
      if(lm.isProviderEnabled(LocationManager.GPS_PROVIDER)){
      loc =  lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
        }
    }
return loc;
}
  @Override
public void onMapReady(GoogleMap googleMap) {
    setmap(googleMap);
}

public void setmap(final GoogleMap map) {
    googlemap = map;
    if (googlemap != null) {
        if (sharedPreferences.getBoolean(CustomAlarm.satellite, false)) {
            googlemap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
        } else {
            googlemap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
        }
        if(getlocation() == null){
            Toast.makeText(getContext(),"You don't live on this earth or Location null",Toast.LENGTH_LONG).show();
        }

在评论之前请注意这一点。

1-我正在调试我的手机samsung j1 api等级19。

2-已启用位置和gps。

3-尝试在googlemaps中找到我的位置。

4-还启用了Google位置记录。

但请不要帮助。

2 个答案:

答案 0 :(得分:0)

曾经有同样的问题。 我通过请求位置更新来解决它。

Google recommendations about it

过了一段时间,地点被抓住了。

答案 1 :(得分:0)

您在此

中请求您的位置
if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { }

这意味着如果权限 NOT 已授予。

当授予 IS 权限(可能是)时,行loc = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);永远不会执行,因此将保留与之前分配的Location loc = null;相同的值,因此为null。

您应该将if语句更改为

if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { 

这意味着如果授予位置权限 IS ,则会向我提供该位置。