0

我正在尝试在 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
4

2 回答 2

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" />
于 2012-07-12T11:06:33.440 回答
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): data_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): data_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): data _poll: len=-1, errno=9: 错误文件号 07-13 01:37:07.511: E/QemuSensors(333 ): data_poll : len=-1, errno=9: Bad file number 07-13 01:37:07.646: E/QemuSensors(333): data _poll: len=-1, errno=9: Bad file number 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): data_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

}

}

谢谢你的帮助

于 2012-07-13T01:45:08.103 回答