无法在android中获取用户位置

时间:2015-12-04 00:14:34

标签: android

每次我运行下面的代码时,日志会吐出“无位置”。我不知道我哪里出错了。

我在清单中启用了位置服务,如下所示:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

我应该指出,我尝试在我的nexus 4(API 22)和虚拟设备(API 16,21,22)上运行此应用程序,但无济于事。

public class MainActivity extends Activity implements LocationListener {

LocationManager locationManager;
String provider;
Location location;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

    provider = locationManager.getBestProvider(new Criteria(), false);

    try {
         location = locationManager.getLastKnownLocation(provider);
    } catch (SecurityException e) {
        Log.d("SE", e.getMessage());
    }

    if (location != null) {

        Log.i("Location Info", "Location achieved!");

    } else {

        Log.i("Location Info", "No location :(");

    }
}

我将不胜感激任何帮助。

2 个答案:

答案 0 :(得分:2)

getLastKnownLocation()将始终返回null,除非设备上的某个应用最近使用特定的位置提供商请求了位置更新。

使用getLastKnownLocation()

  • 当您对某个地点感兴趣时,如果有一个地方很方便,但如果没有它就可以生活,或者

  • 作为优化,如果requestLocationUpdates()返回getLastKnownLocation()或您认为太旧的null,则使用Location

    < / LI>

有关何时在LocationManager上使用各种方法的更多指导,请参阅the documentation

答案 1 :(得分:1)

因为并不总是最后一个已知的位置。如果您想确保获得位置,请注册更新并等待确定位置。网络将很快到来,GPS可能需要一段时间。虽然两者都有失败的机会,例如,如果你没有连接到wifi /蜂窝,即使网络也会失败,如果GPS无法看到足够的卫星,GPS将会失败。