我正在尝试开发很少的应用程序,该应用程序在启动时会在烤面包或其他内容中显示当前位置的名称。我编写的代码仅在我从Eclipse的Emulator Control View中手动发送坐标的情况下,才会在显示屏上显示Toast。

我的问题:是否有一种方法可以在启动时强制发送此坐标,因为我希望在加载应用程序时使用Toast?我该怎么办?谢谢。

这是代码:

public class HomeActivity extends Activity implements LocationListener {

    private LocationManager locationManager;
    private String welcomeMsg;
    private String crtLocationName;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        initLocationManager();
    }

    private void initLocationManager(){
        locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 5000, this);
    }


     */
    @Override
    public void onLocationChanged(Location location) {
        if (location != null) {
            try {
                crtLocationName = getLocationName(location);

                Toast.makeText( getApplicationContext(), crtLocationName, Toast.LENGTH_LONG).show();
            } catch (IOException e) {
                welcomeMsg = "Location cannot be determined";
                crtLocationName = "";
            }

//          locationManager.removeUpdates(this);
        }
    }


    @Override
    public void onProviderDisabled(String provider) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onProviderEnabled(String provider) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
        // TODO Auto-generated method stub

    }

}

最佳答案

由于仿真器没有GPS接收器,因此仅当您通过DDMS提供一些新坐标时,才会调用方法onLocationChanged

在真实电话上,它不会立即显示Toast;它将等待,直到找到GPS卫星并接收GPS定位,然后显示Toast消息。

关于java - 无法在应用程序启动时获取位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7132766/

10-10 09:18
查看更多