Maps API (google-play-services) と ActionBar Sherlock を含むアプリケーションを公開しましたが、あまりにも多くのデバイスと複数のバージョンであまりにも多くのテストを行いました。
しかし、アプリ ( https://play.google.com/store/apps/details?id=br.ufc.ondefica ) を自分のデバイス (Galaxy Ace (GT-S5830B))でダウンロードしたユーザーがいました。引き出しの「Ver Mapa」(地図を参照)メニューに、次の例外がありました。
java.lang.NoSuchMethodError: java.io.IOException.<init>
at com.google.android.gms.internal.g.f(Unknown Source)
at com.google.android.gms.internal.g.b(Unknown Source)
at com.google.android.gms.internal.e.a(Unknown Source)
at com.google.android.gms.internal.e.a(Unknown Source)
at com.google.android.gms.internal.bq.ac(Unknown Source)
at com.google.android.gms.internal.cg$1.run(Unknown Source)
at com.google.android.gms.internal.ch$1.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
at java.lang.Thread.run(Thread.java:1096)
これが Google Play で表示されるすべてです。それで、インターネットでエラーを探したところ、このエラーはマップアプリが原因で発生する可能性があることがわかりました(ただし、ユーザーは完全に機能しています)、または受け取るIOExceptionコンストラクターと関係がある可能性がありますThrowable like パラメータ (API レベル 9)。このデバイスと同じ API レベルの別のデバイスで動作しているにもかかわらず、このエラーがどこにあるのかわかりません。
これは私のMapFragmentコードです:
public class UFCMapFragment extends FragmentWithSearch {
private GoogleMap map;
private int positionToShow = 3;
private boolean isDefaultView = true;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.map_layout, container, false);
((MainActivity) getActivity()).setTitle(getResources().getStringArray(R.array.sliding_menu)[0]);
return root;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
map = ((SupportMapFragment) getActivity().getSupportFragmentManager()
.findFragmentById(R.id.map)).getMap();
map.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
map.setMyLocationEnabled(true);
Bundle bundle = getArguments();
if (bundle != null && bundle.containsKey("positionToShow")) {
isDefaultView = false;
positionToShow = bundle.getInt("positionToShow");
}
loadMap();
// Move the camera instantly to the default place to show with a zoom of
// 15.
map.moveCamera(CameraUpdateFactory.newLatLngZoom(DataHelper.data.places
.get(positionToShow).getCoordinates(), 13));
// Zoom in, animating the camera.
map.animateCamera(CameraUpdateFactory.zoomTo(16), 4000, null);
}
private void loadMap() {
for (int i = 0; i < DataHelper.data.places.size(); i++) {
Placemark place = DataHelper.data.places.get(i);
Marker marker = map.addMarker(new MarkerOptions()
.icon(BitmapDescriptorFactory.fromResource(ParserKML
.loadMapOfIcons(place.getIconID())))
.title(place.getName()).snippet(place.getDescription())
.position(place.getCoordinates()));
if (i == positionToShow && !isDefaultView)
marker.showInfoWindow();
}
}
public void onDestroyView() {
super.onDestroyView();
Fragment fragment = (getFragmentManager().findFragmentById(R.id.map));
FragmentTransaction ft = getActivity().getSupportFragmentManager()
.beginTransaction();
ft.remove(fragment);
ft.commit();
}
}
前もって感謝します、