LocationManager.getLastKnownLocation在系统引导后立即运行时返回null

时间:2013-04-11 04:35:17

标签: android

我的appwidget获取位置以获得预测。 作为标题,在系统重新启动后无法获得位置。

    LocationManager lm = (LocationManager)mContext.getSystemService(Context.LOCATION_SERVICE);

    Criteria criteria = new Criteria();
    criteria.setBearingRequired(false); 
    criteria.setSpeedRequired(false);   
    criteria.setAltitudeRequired(false);    
    String provider = lm.getBestProvider(criteria, true);
    Location loc = lm.getLastKnownLocation(provider);

    double lat = loc.getLatitude(); //null
    double lon = loc.getLongitude();/null

为什么在系统重启后这些是空的?

2 个答案:

答案 0 :(得分:1)

使用Broadcastreceiver on reboot

// Do something onReceive()

@Override
public void onReceive(Context context, Intent intent) {

//Do something after reboot
}

请看这个链接:

Android BroadcastReceiver on startup - keep running when Activity is in Background

答案 1 :(得分:0)

这是因为在启动时GPS和Wifi /数据连接都是OFF。因此,位置为空。 您需要更改一些代码,以提示用户打开GPS SettingsWifi Settings