android获取位置location为null的问题

Posted 贵^_^公子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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) {}

        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {}
};
经过测试。。没有问题。。希望帮到你们。。。




















































以上是关于android获取位置location为null的问题的主要内容,如果未能解决你的问题,请参考以下文章

怎么在android百度地图通过经纬度来定位并且显示出地图位置

Android:关闭位置时,Google Fused Location 不起作用

Android 从 GPS 获取位置

如何在 Android 中通过 Wifi 获取位置?

获取当前lat长的android

使用PendingIntent获取位置始终返回Null