当我得到 LocationManager 时发生异常。(Android)
Posted
技术标签:
【中文标题】当我得到 LocationManager 时发生异常。(Android)【英文标题】:exception occur when i get the LocationManager.(Android) 【发布时间】:2013-02-06 19:42:03 【问题描述】:我想获取 android 移动位置。所以我需要得到LocationManager
,但是发生了异常,我不知道为什么。你能帮助我吗?下面是我的代码。
public static String getMobileLocation(Context context)
LocationManager lm = (LocationManager) context
.getSystemService(Context.LOCATION_SERVICE);
if (null == lm)
return "error01";
lm.setTestProviderEnabled(LocationManager.GPS_PROVIDER, true);
lm.setTestProviderEnabled(LocationManager.NETWORK_PROVIDER, true);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_LOW);
String provider = lm.getBestProvider(criteria, true);
if (provider == null || provider.length() == 0)
return "error02";
LocationListener locationListener = new LocationListener()
@Override
public void onStatusChanged(String provider, int status,
Bundle extras)
// TODO Auto-generated method stub
@Override
public void onProviderEnabled(String provider)
// TODO Auto-generated method stub
@Override
public void onProviderDisabled(String provider)
// TODO Auto-generated method stub
@Override
public void onLocationChanged(Location location)
// TODO Auto-generated method stub
LocationInfo.location = location;
;
lm.requestLocationUpdates(provider, 0, 0, locationListener);
while (null == location)
location = lm.getLastKnownLocation(provider);
if (null == location)
return "error03";
StringBuilder strBuilder = new StringBuilder();
strBuilder.append(location.getLatitude());
strBuilder.append(",");
strBuilder.append(location.getLongitude());
String str = strBuilder.toString();
str = str.trim();
if (null == str || str.length() == 0)
return "error04";
lm.removeUpdates(locationListener);
lm.setTestProviderEnabled(LocationManager.GPS_PROVIDER, false);
lm.setTestProviderEnabled(LocationManager.NETWORK_PROVIDER, false);
location = null;
return str;
当我收到LocationManager
时发生异常。
DDMS 日志在这里。
引起:java.lang.IllegalArgumentException:提供者“gps”未知
在 android.os.Parcel.readException(Parcel.java:1331)
在 android.os.Parcel.readException(Parcel.java:1281)
在 android.location.ILocationManager$Stub$Proxy.setTestProviderEnabled(ILocationManager.java:1122)
在 android.location.LocationManager.setTestProviderEnabled(LocationManager.java:1140)
在 *.record.LocationInfo.getMobileLocation(LocationInfo.java:35)
在 .MainActivity.initLocation(MainActivity.java:45)
在 **.MainActivity.onCreate(MainActivity.java:40)
【问题讨论】:
有什么异常?这可能是权限异常,因为您需要在清单中添加正确的权限。否则我们真的需要知道您的异常或发布您的 DDMS 日志。' 好的,明天到公司我会加日志的。谢谢。 我添加了答案,应该可以解决 【参考方案1】:更新:
LocationManager.GPS_PROVIDER
不适用于setTestProviderEnabled()
它似乎在某种程度上被弃用了。
用途:
locationManager.setTestProviderLocation(LocationManager.GPS_PROVIDER, location);
【讨论】:
如果将 LocationManager.GPS_PROVIDER 更改为“测试”所有内容,除了新的 Location(LocationManager.GPS_PROVIDER)以上是关于当我得到 LocationManager 时发生异常。(Android)的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 LocationManager 在 android 中获取当前位置
使用 google locationManager 获取 0.0 位置
没有网络时不调用 CLLocationManagerDelegate -locationManager(_:startMonitoring:)