【问题标题】:exception occur when i get the LocationManager.(Android)当我得到 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 日志。'
  • 好的,明天到公司我会加日志的。谢谢。
  • 我添加了答案,应该可以解决

标签: android locationmanager


【解决方案1】:

更新:

LocationManager.GPS_PROVIDER 不适用于setTestProviderEnabled()

它似乎在某种程度上被弃用了。

用途:

locationManager.setTestProviderLocation(LocationManager.GPS_PROVIDER, location);

【讨论】:

  • 如果将 LocationManager.GPS_PROVIDER 更改为“测试”所有内容,除了新的 Location(LocationManager.GPS_PROVIDER)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-25
  • 1970-01-01
  • 2013-05-12
  • 2016-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多