Korzystając z Google Maps Android API V2, podążam za Google Play Services setup documentation, aby sprawdzić, czy usługi Google Play są zainstalowane, używając następującego kodu w mojej głównej aktywności:Google Maps Android API V2 sprawdź, czy GoogleMaps są zainstalowane na urządzeniu
@Override
public void onResume()
{
checkGooglePlayServicesAvailability();
super.onResume();
}
public void checkGooglePlayServicesAvailability()
{
int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
if(resultCode != ConnectionResult.SUCCESS)
{
Dialog dialog = GooglePlayServicesUtil.getErrorDialog(resultCode, this, 69);
dialog.setCancelable(false);
dialog.setOnDismissListener(getOnDismissListener());
dialog.show();
}
Log.d("GooglePlayServicesUtil Check", "Result is: " + resultCode);
}
Działa to dobrze. Zauważyłem jednak, że niektóre ze starszych telefonów z Androidem, na których się znajdowałem (głównie z wersji 2.2), nie miały ani GooglePlayServices, ani samej aplikacji Map Google.
LogCat zgłosi ten błąd: Google Maps Android API: brakuje aplikacji Mapy Google.
Pytanie - w jaki sposób mogę przeprowadzić podobną kontrolę, niż w przypadku dostępności Google Maps na urządzeniu? Po drugie, jeśli użytkownik ma już zainstalowane Mapy Google, uważam, że kontrola będzie musiała upewnić się, że ich zainstalowana wersja jest zgodna z wersją 2 interfejsu API Map Google na Androida.
Aktualizacja Oto moja metoda setupMapIfNeeded(), która jest wywoływana na końcu onCreate(). To jest, gdy myślę, że chciałbym, aby ustalić, czy Google Maps jest zainstalowana i ostrzega użytkownika, patrz blok innego:
private void setUpMapIfNeeded()
{
// Do a null check to confirm that we have not already instantiated the map.
if (mMap == null)
{
// Try to obtain the map from the SupportMapFragment.
mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.basicMap)).getMap();
if (mMap != null)
{
mMap.setLocationSource(this);
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(44.9800, -93.2636), 10.0f));
setUpMap();
}
else
{
//THIS CODE NEVER EXECUTES - mMap is non-null even when Google Maps are not installed
MapConstants.showOkDialogWithText(this, R.string.installGoogleMaps);
}
}
}
mogę tylko zapytać co, który 69 masz na metodzie paramte getErrorDialog rs? – luiscvalmeida
@luiscvalmeida 69 to tylko kod żądania (wybrałem go). Zobacz metodę getErrorDialog w http://developer.android.com/reference/com/google/android/gms/common/GooglePlayServicesUtil.html#getErrorDialog – DiscDev