經過幾天瞭解Android的工作原理,我決定構建我的第一個應用程序:一個簡單的應用程序,用戶可以通過簡單的EditText
小部件從用戶提供的地址顯示GMap。
我使用Geocoder
來做到這一點。RPC錯誤與地理編碼器
與logcat的一個小bug跟蹤後,這裏是由亞行返回的異常:
E/LocationMasfClient( 53): forwardGeocode(): RPC failed with status 1
W/System.err( 262): java.io.IOException: RPC failed with status 1
W/System.err( 262): at android.location.Geocoder.getFromLocationName(Geocoder.java:166)
W/System.err( 262): at fr.meetopia.tinymap.MapViewActivity.testGeoCoder(MapViewActivity.java:104)
W/System.err( 262): at fr.meetopia.tinymap.MapViewActivity.onCreate(MapViewActivity.java:38)
W/System.err( 262): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
W/System.err( 262): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
W/System.err( 262): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
W/System.err( 262): at android.app.ActivityThread.access$2200(ActivityThread.java:119)
W/System.err( 262): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
而現在這裏由堆棧跟蹤指向的代碼:
Geocoder geoCoder = new Geocoder(this);
MapView mapView = (MapView) findViewById(R.id.mapview);
MapController mc = mapView.getController();
GeoPoint p;
try {
List<Address> addresses = geoCoder.getFromLocationName("paris france", 50);
if (addresses.size() > 0) {
p = new GeoPoint(
(int) (addresses.get(0).getLatitude() * 1E6),
(int) (addresses.get(0).getLongitude() * 1E6));
mc.animateTo(p);
mapView.invalidate();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
顯然,這個代碼是一個0123例子的一部分。
我用不同版本的Google APIS(8,7,4)和不同版本的 SDK平臺(2.2,2.1,1.6)做了一些測試,但沒有運氣。我只注意到Google API 8包含一個已知的bug,並且返回了Service Unavailable Exception
而不是RPC Failed 1
。另一方面,我試圖直接在我的設備上運行我的應用程序(HTC Desire 2.1),並且我注意到了相同的行爲(也就是說:沒有任何行爲,它的中心爲美國地圖)。
這裏談到的Android清單的用戶權限:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
你能找到這個原因嗎?我現在正在遇到一模一樣的問題! – 2011-10-03 17:08:00