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) {}
};
经过测试。。没有问题。。希望帮到你们。。。

时间: 2024-11-10 04:42:26

android获取位置location为null的问题的相关文章

[android] 手机卫士手机实现短信指令获取位置

获取位置  新建一个service的包 新建一个GPSService类继承系统的Service类 清单文件中注册一下 重写onCreate()方法,服务创建的时候回调 重写onDestroy()方法,服务销毁的时候回调 把上一节的代码拿到这个地方来 得到用户移动后的最后一次的位置,保存到SP中 转换标准坐标为火星坐标,数据库文件放到assets目录下,把ModifyOffset.java放在service包下面 获取ModifyOffset对象,通过ModifyOffset.getInstanc

Android定位&amp;地图&amp;导航——基于百度地图移动获取位置和自动定位

一.问题描述 使用百度地图实现如图所示应用,首先自动定位当前我起始位置(小圆点位置),并跟随移动不断自动定位我的当前位置 百度Api不同版本使用会有些差异,本例中加入lib如下: 二.编写MyApplication类 public class MyApplication extends Application { static MyApplication myApplication; BMapManager mBMapManager = null; String mStrKey = "7ZfuR

Android位置服务介绍,并介绍如何通过LocationManager对象获取位置信息

 1.位置服务,英文翻译为Location-Based Services,简称LBS,又称为定位服务或基于位置的服务,融合了GPS定位.移动通信.导航等多种技术,提供与空间位置相关的综合应用服务,基于位置的服务发展很迅速,涉及商务.医疗.工作和生活的各个方面,为用户提供定位.追踪和敏感区域警告等一系列服务.比如谷歌地图,百度地图,都需要通过位置服务. 2.Android平台下支持提供位置服务的API,在开发过程中主要用到LocationManager和LocationProviders对象:

Android获取手机位置(LocationManager)

LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); List<String> providers = lm.getProviders(true); Location l = null; for (int i=providers.size()-1; i>=0; i--) { l = lm.getLastKnownLocation(providers.get(i)); if (l

【小功能2】android获取手机信息(号码,内存,CPU,分辨率,MAC,IP,SD卡,IMEI,经纬度,信号强度等等)

为了实现一个功能,需要搜集手机信息,自己先在网上找了相关信息进行了汇总,主要是汇集手机的信息,一般想要的信息在手机设置->关于手机->状态消息里面包含了手机的各种信息,下面的代码中也主要显示了那些信息,但是源码的方法我还没有看,先把总结的贴出来.先上图(太多就截取几个).  上代码啦,太多了,就写主要代码了. // 获取Android手机中SD卡存储信息 获取剩余空间 public void getSDCardInfo() { // 在manifest.xml文件中要添加 /* * <u

Android 获取地理位置信息 封装好了 直接用

前言:花了一个早上研究了以下android获取经纬度,然后网上的参考资料都是杂七杂八,基本上都是过去几年的,现在我用 android6.0参照别人的结果发生好多错误,我的内心几乎是崩溃的.后来,不断百度,不断goole,不断查找资料,终于解决了,而且完美打包,以后直接用就可以了. 1.这个类原来是用kotlin写的,后来有些东西和java又不同,索性就改成java吧,反正他们兼容性很强-----封装的类名为:LocationUtil package com.example.jason_jan.g

Android模拟位置信息

Android模拟位置程序,俗称GPS欺骗,只能修改采用GPS定位的软件. 手机定位方式目前有4种:基站定位,WIFI定位,GPS定位,AGPS定位 常见的修改手法: 1. 抓包欺骗法,抓包改包欺骗服务器端, 但是得专门去针对某款app,而且现在很多app数据包都加密了 2. hook java层经纬度获取函数, 这个方法以前可以用,现在不行了 3. hook native层经纬度获取函数 4. 使用允许模拟地址位置信息(不是很通用有版本限制) 为了修改微信朋友圈地理位置信息,为了好玩 试过了上

Android获取手机联系人的姓名和电话

Android获取手机联系人的姓名和电话 主要是用到了跳入手机联系人的intent和获取手机联系人信息的内容提供者,直接上代码 注:此贴是借鉴别人的帖子加了一些自己的东西写出的,原帖地址明日附上: / 首先 我们需要跳入手机通讯录 Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); startActivityForResult(intent, 0); // 之后,我们需要重写

android获取设备信息

public class DeviceInfo { private static Application APP = null; private static String sd_card = Environment.getExternalStorageDirectory()+File.separator+"wlcache"; public static Application getApp() { return APP; } // 获取手机型号 public static Strin