我正在尝试在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
答案 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
}
}
谢谢你的帮助