想实现一个定位的功能,用GPS可以实现了,但是使用网络来定位却遇到了一点问题.
先贴代码:private LocationManager locationManager;
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
if(!locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){
   ......
}
Location location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 0, this);
运行到isProviderEnabled方法是总是返回false,即使我把gprs,gps,wifi都打开了还是如此.
而且运行后总是会调用LocationListener的public void onProviderDisabled(String provider) 方法,并没有调用public void onLocationChanged(Location location)方法有人知道原因吗?非常感谢!

解决方案 »

  1.   

    对了 已经添加了一下权限:<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
    <uses-permission android:name="android.permission.INTERNET"/>  
        <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"></uses-permission>
      

  2.   

    加行这个试试
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
      

  3.   


    手机上在设置里面是否开启了模拟地点?方法:设置 -> 应用程序设置 -> 开发 -> 允许模拟地点
      

  4.   

    isProviderEnabled(LocationManager.GPS_PROVIDER)
    你有没有试过?
      

  5.   

    locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 0, this);
    你这块只设置了通过基站定位,把它设置成GPS定位试试,肯定可以了
      

  6.   

    locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 0, this);这块设置成了只使用基站定位,你设置成GPS定位试试
      

  7.   

    网络定位分基站和WIFI,如果在同一个基站的范围,定位数据肯定一样,WIFI也类似
      

  8.   

    这个定位没啥用,基站定位是基于基站信息的,可以获得手机信息访问google的解析器来获得基站信息进行定位
      

  9.   


    public void onProviderDisabled(String provider) 方法的意思是,定位服务不能用,比如gps定位,network定位,在GPS中有一个方法是可以取得最佳的定位的,方法也是有个provider的,并没有调用public void onLocationChanged(Location location)方法这个方法是当用户定位的位置发生改变的时候才会触发的,楼主,你还是去网上多找些例子看看的
      

  10.   

    在一个网络定位是手机GPRS定位,是从google服务器取得的gson数据,定位包括,gps定位,基站定位,网络定位的
      

  11.   

    我已经说了用GPS定位是可以的,程序可以正常,也能获取数据。
    试了下用LocationManager.NETWORK_PROVIDER 就不行。
    对于comeoverjava的回复,有两个疑问:
    1.LocationManager.NETWORK_PROVIDER和手机GPRS定位是一回事吗?如果不是一回事,那LocationManager.NETWORK_PROVIDER是用来干嘛的?2.关于public void onLocationChanged(Location location)方法,如果我在注册时:locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 0, this);指定了第二个参数的值,应该是无论位置有没有变化,每间隔1000毫秒onLocationChanged方法都会执行一次
      

  12.   


    怎么会没用?我感觉应该也是能定位的,只是定位的结果误差会大一点。
    另外,我用百度地图的时候我把gprs,gps,wifi全部关闭了,还是能定位,结果还不错,误差100m左右。
      

  13.   

    你可以用
    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    locationManager.getProviders(true),
    去看看返回的list中有没有LocationManager.NETWORK_PROVIDER, 
      

  14.   


    确实是可以,我系统的版本是2.3.6的好像。另外我不开gprs的情况下也是可以收彩信的,是否跟这个有关?
    谢谢!