私は理解できないように見える単純な問題を抱えています。geoname WebService.search メソッドを実行しようとしていますが、「java.lang.StringIndexoutOfBoundsException」エラーが発生し続けます。プレーンな古い Java でプログラムを実行しましたが、問題なく正常に動作します。Android で実行すると、「java.lang.StringIndexoutOfBoundsException」エラーが発生します。マニフェストに「インターネット」権限が設定されています。Webservice.search(searchCriteria) を実行するとエラーが発生します。コードは次のとおりです。
package fau.edu;
import org.geonames.*;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class MainRoutine extends Activity {
TextView displayObject;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
displayObject = (TextView)findViewById(R.id.TextView01);
try {
String displayString;
//
// Toponomy Search
//
ToponymSearchCriteria searchCriteria = new ToponymSearchCriteria();
searchCriteria.setQ("Miami");
searchCriteria.setFeatureClass(FeatureClass.valueOf("H"));
searchCriteria.setCountryCode("US");
searchCriteria.setAdminCode1("FL");
searchCriteria.setFeatureCode("spng");
WebService.setUserName("******"); // username '*' out for public consumption. Actual code has valid name.
ToponymSearchResult searchResult = WebService.search(searchCriteria);
displayString = null;
for (Toponym toponym : searchResult.getToponyms()) {
displayString += toponym.getName() + " " + toponym.getCountryName() + "\n";
}
displayObject.setText(displayString);
}
catch(Exception e) {
e.printStackTrace();
displayObject.setText("Try Error...\n" + e.toString());
}
}
}
WebService.search(searchCriteria) メソッドを実行すると、エラーが発生します。LogCat で表示されるエラーは次のとおりです。
java.lang.StringIndexOutOfBoundsException
at java.lang.String.substring(String.java:1646
at org.jdom.input.SAXHandler.startElement(SAXHandler.java:568)
at org.apache.harmony.xml.ExpatParser.startElement(ExpartParser.java:146)
....
jdom.jar と geonames.-1.0.6.jar を Java ビルド パスに正しく配置したので、問題はないと思います。興味深いのは、WebService.postalCodeSearch(postalSearch) と WebService.weatherIcao("KPBI") を使用するようにコードを書き直したところ、問題なく Android で完全に動作することです。私が言ったように、このコードは Java SE6 で終日実行されます。何が間違っている可能性があるかについてのアイデアはありますか?