2012-04-11 75 views
0

我需要一些关于Android中的关于LocationManager的信息/帮助。我使用此代码根据他的位置获取用户的特定信息,但在某些情况下,我得到provider=null(我不确定何时,因为该例外已上传到我们的服务器,我无法再现它)。Android位置管理器getbestlocation返回null

下面是示例代码:

LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 
Criteria crta = new Criteria(); 
crta.setAccuracy(Criteria.ACCURACY_FINE); 
crta.setAltitudeRequired(false); 
crta.setBearingRequired(false); 
crta.setCostAllowed(true); 
crta.setPowerRequirement(Criteria.POWER_LOW); 
String provider = locationManager.getBestProvider(crta, true); 
Log.d("","provider : "+provider); 
// String provider = LocationManager.GPS_PROVIDER; 
Location location = locationManager.getLastKnownLocation(provider); 
updateWithNewLocation(location); 
locationManager.requestLocationUpdates(provider, 1000, 0, locationListener); 

我怎么能当我的供应商为空,如果有一种方式来获得当前位置,并使用它?

在此先感谢!

回答

1

试试这个代码并且不要忘记,你的供应商ATLEAST一个应该被启用

LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
Criteria crta = new Criteria(); 
crta.setAccuracy(Criteria.ACCURACY_FINE); 
crta.setAltitudeRequired(true); 
crta.setBearingRequired(true); 
crta.setCostAllowed(true); 
crta.setPowerRequirement(Criteria.POWER_LOW); 
String provider = locationManager.getBestProvider(crta, true); 
Log.d("","provider : "+provider); 
// String provider = LocationManager.GPS_PROVIDER; 
locationManager.requestLocationUpdates(provider, 1000, 0, locationListener); 
Location location = locationManager.getLastKnownLocation(provider); 
//updateWithNewLocation(location); 
+0

我不能看到,两行已经改变了自己的立场你的代码和mine..except之间的差异。 – 2012-04-11 12:11:35

+0

它工作吗? – vipin 2012-04-11 12:12:26

+0

它也在工作之前,但想法是如何防止提供程序为空...因为在某些情况下(我不知道哪些是因为我不能再现它们,它等于空)。 – 2012-04-11 12:22:21