Android获取当前位置,location为空

MainActivity.java:
public class MainActivity extends Activity {
LocationManager locationManager ;
String provider;
TextView location_msg;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
location_msg = (TextView) findViewById(R.id.location_msg);
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
List providerList = locationManager.getProviders(true);
if(providerList.contains(LocationManager.GPS_PROVIDER))
{
provider = LocationManager.GPS_PROVIDER;

    }
    else if(providerList.contains(LocationManager.NETWORK_PROVIDER))
    {
        provider = LocationManager.NETWORK_PROVIDER;
    }
    else
    {
        Toast.makeText(MainActivity.this, "here are no useful location service", 1000).show();
        return;
    }

    Location location = locationManager.getLastKnownLocation(provider);
    if(location!=null)
    {
        Log.i(">>>>>>>MainActivity", "显示位置信息,信息呢?");
        showLocation(location);

    }
    else
    {
        Log.i(">>>>>>>MainActivity", "信息显示为空。。。。。。");

    }
    locationManager.requestLocationUpdates(provider, 5000, 1, listener);


}   


private void showLocation(Location location) {
    String position = "latitude is " + location.getLatitude() + "\n"
            + "longitude is " + location.getLongitude();
    location_msg.setText("HELLO WORLD");
    location_msg.setTextColor(Color.BLUE);
    //Log.i(">>>>>>>MainActivity", "显示位置信息,信息呢?");
}
@Override
protected void onDestroy() {
    // TODO Auto-generated method stub
    super.onDestroy();
    if(locationManager!=null)
    {
        locationManager.removeUpdates(listener);

    }
}
LocationListener listener = new LocationListener() {

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {

    }

    @Override
    public void onProviderEnabled(String provider) {

    }

    @Override
    public void onProviderDisabled(String provider) {

    }

    @Override
    public void onLocationChanged(Location location) {
        showLocation(location);
    }
};

}
布局文件为:一个TextView显示地理位置:经度和纬度
AndroidManifest.xml文件添加访问位置权限:


4个回答

     通过最后一次的地理位置来获得Location对象:location = locationManager.getLastKnownLocation(provider);得出location为空。查看各种资料发现,getLastKnownLocation仅仅是获取当缓存中的上一次打开地图缓存起来的位置,不可能一次就能获取,那唯有location为空的时候继续......
答案就在这里:Android获取当前位置,location为空
----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。

liujian011
liujian011 那怎么修改才能获取到位置的经度和纬度呢?
4 年多之前 回复

如果以前没有获得过,那你用过去最后一次是获取不到的,你就在监听事件中获取就行了

getLastKnownLocation仅仅是获取当缓存中的上一次打开地图缓存起来的位置

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问