尝试获取地理位置时无法找到提供程序

时间:2012-07-12 10:50:27

标签: map android-logcat

我正在尝试在android上制作地理定位代码。我在logcat窗口中收到以下错误,即使我在模拟器中得到了结果。

07-12 10:45:24.300: E/ActivityThread(237): Failed to find provider info for com.google.settings
07-12 10:45:24.310: E/ActivityThread(237): Failed to find provider info for com.google.settings
07-12 10:45:24.371: E/ActivityThread(237): Failed to find provider info for com.google.settings

2 个答案:

答案 0 :(得分:0)

您可能尚未授予应用程序访问这些提供程序的权限。

我不知道您的实施,因为您没有提供任何代码,但我认为您可能需要互联网,粗略的位置和良好的位置。我添加了一些额外的东西:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<uses-permission android:name="android.permission.CONTROL_LOCATION_UPDATES" />
<uses-permission android:name="android.permission.INTERNET" />

将这些文件放在您的清单文件中,就在<application ..>标记之前。

如果您使用的是地图,请确保它位于<application ..>标记内:

<uses-library android:name="com.google.android.maps" />

答案 1 :(得分:0)

它有点工作,但现在我有以下错误:

07-13 01:37:07.171:E / QemuSensors(333):data_ poll:len = -1,errno = 9:文件编号错误 07-13 01:37:07.171:E / QemuSensors(333):数据 _poll:len = -1,errno = 9:文件号错误 07-13 01:37:07.211:E / QemuSensors(333):data_ poll:len = -1,errno = 9:文件号错误 07-13 01:37:07.211:E / QemuSensors(333):数据 _poll:len = -1,errno = 9:文件号错误 07-13 01:37:07.211:E / QemuSensors(333):data_ poll:len = -1,errno = 9:文件号错误 07-13 01:37:07.211:E / QemuSensors(333):数据 _poll:len = -1,errno = 9:文件号错误 07-13 01:37:07.511:E / QemuSensors(333):data_ poll:len = -1,errno = 9:文件号错误 07-13 01:37:07.646:E / QemuSensors(333):data _poll:len = -1,errno = 9:文件号错误 07-13 01:37:07.646:E / QemuSensors(333):data_ poll:len = -1,errno = 9:文件号错误 07-13 01:37:07.661:E / QemuSensors(333):data _poll:len = -1,errno = 9:文件号错误 07-13 01:37:07.661:E / QemuSensors(333):data_ poll:len = -1,errno = 9:文件号错误 07-13 01:37:07.670:E / QemuSensors(333):数据 _poll:len = -1,errno = 9:文件号错误

这是代码

    package com.android.map;

    import android.location.Location;
    import android.location.LocationListener;
    import android.location.LocationManager;
    import android.os.Bundle;
    import android.view.KeyEvent;
    import android.widget.Toast;

    import com.google.android.maps.GeoPoint;
    import com.google.android.maps.MapActivity;
    import com.google.android.maps.MapController;
    import com.google.android.maps.MapView;
    import com.google.android.maps.MyLocationOverlay;

     public class HelloGoogleMapActivity extends MapActivity implements LocationListener
     {

 private MapView mapView = null;
 private LocationManager lm = null;
 private double lat = 0;
 private double lng = 0;
 private MapController mc = null;
 private MyLocationOverlay myLocation = null;

@Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);          
    mapView = (MapView) this.findViewById(R.id.mapView);
    mapView.setBuiltInZoomControls(true);

    lm = (LocationManager) this.getSystemService(LOCATION_SERVICE);
    lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 0, this);
    lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 10000, 0, this);

    mc = mapView.getController();
    mc.setZoom(12);
    myLocation = new MyLocationOverlay(getApplicationContext(),mapView); 
    myLocation.runOnFirstFix(new Runnable(){
     public void run(){
         mc.animateTo(myLocation.getMyLocation());
         mc.setZoom(17);
     }
    });

    mapView.getOverlays().add(myLocation);
    myLocation.enableMyLocation();
    myLocation.enableCompass();
}

@Override
protected boolean isRouteDisplayed()
{
    return false;
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
    if (keyCode == KeyEvent.KEYCODE_S)
    {
        mapView.setSatellite(!mapView.isSatellite());
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

@Override
public void onLocationChanged(Location location) {
    // TODO Auto-generated method stub
    lat = location.getLatitude();
     lng = location.getLongitude();
     Toast.makeText(getBaseContext(),
     "Location change to : Latitude = " + lat + " Longitude = " + lng,
     Toast.LENGTH_SHORT).show();
     GeoPoint p = new GeoPoint((int) (lat * 1E6), (int) (lng * 1E6));
     mc.animateTo(p);
     mc.setCenter(p);
}

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

}

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

}

@Override
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
    // TODO Auto-generated method stub

}

}

谢谢你的帮助