android获取位置location为null的问题

亦余心之所善兮,虽九死其犹未悔。这篇文章主要讲述android获取位置location为null的问题相关的知识,希望能为你提供帮助。

  12:38:542016-12-23
很多人经常遇到这种问题,主要是获取到位置的信息为null,第一个主要要有权限   
        < uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
            < uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>
第二个我们调用的方法是 Location location = locationManager.getLastKnownLocation(provider);
  这个方法主要是获取上一次的经纬度信息,上一次的话肯定是空的啦。。这是要注册一下获取事件的监听器
等一会以后就可以拿到了经纬度了。。所以说一开始不要着急获取经纬度。。等待一会就有了。。不会报空指针异常。
LocationManager  locationManager;
      String serviceName = Context.LOCATION_SERVICE;
      locationManager = (LocationManager) con.getSystemService(serviceName); // 查找到服务信息
      //locationManager.setTestProviderEnabled("gps", true);
   
      locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 3000, 0, mLocationListener01);
      locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 3000, 0, mLocationListener01);
 
 
获取数据和监听器
 
    * 通过location获取当前设备的具体位置
      *
      * @param location
      * @param rowId
      * @param params
      * @param rowId
      */
  private Location updateToNewLocation(Location location) {
    System.out.println("--------zhixing--2--------");
      String latLongString;
      double lat = 0;
      double lng=0;
   
      if (location != null) {
        lat = location.getLatitude();
        lng = location.getLongitude();
        latLongString = "纬度:" + lat + "\n经度:" + lng;
        System.out.println("经度:"+lng+"纬度:"+lat);
      } else {
        latLongString = "无法获取地理信息,请稍后...";
      }
      if(lat!=0){
        System.out.println("--------反馈信息----------"+ String.valueOf(lat));
      }
   
      Toast.makeText(getApplicationContext(), latLongString, Toast.LENGTH_SHORT).show();
 
      return location;
   
  }
   
            // 设置监听器,自动更新的最小时间为间隔N秒(1秒为1*1000,这样写主要为了方便)或最小位移变化超过N米
  public final LocationListener mLocationListener01 = new LocationListener() {
                @Override
                public void onLocationChanged(Location location) {
                        updateToNewLocation(location);
                }
     
                @Override
                public void onProviderDisabled(String provider) {
                  updateToNewLocation(null);
                }
                @Override
                public void onProviderEnabled(String provider) {}
【android获取位置location为null的问题】                @Override
                public void onStatusChanged(String provider, int status, Bundle extras) {}
};
经过测试。。没有问题。。希望帮到你们。。。




















































    推荐阅读