Quando si utilizza l'API V2 di Google Maps per Android Sto seguendo lo Google Play Services setup documentation per verificare che i servizi di Google Play siano installati, utilizzando il seguente codice nella mia attività principale:Google Maps API Android V2 verifica se GoogleMaps è installato sul dispositivo
@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);
}
Questo funziona correttamente. Tuttavia, ho notato che alcuni dei vecchi telefoni Android che ho messo in giro (per la maggior parte in esecuzione 2.2) mancavano sia a GooglePlayServices sia all'app Google Maps stessa.
LogCat riporterà questo errore: API Android di Google Maps: manca l'applicazione di Google Maps.
Domanda - Come posso eseguire un controllo simile a quello sopra per la disponibilità di Google Maps su un dispositivo? In secondo luogo, se l'utente ha già installato Google Maps, penso che il controllo dovrà accertarsi che la loro versione installata sia compatibile con V2 dell'API di Android Maps.
Aggiornamento Ecco il mio metodo setupMapIfNeeded() che viene chiamato alla fine del onCreate(). Questo è dove penso che avrei voluto per determinare se è installato Google Maps e avvisare l'utente, vedere il blocco else:
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);
}
}
}
Posso solo chiedere che cosa è che il 69 si hanno sul metodo paramte getErrorDialog rs? – luiscvalmeida
@luiscvalmeida Il 69 è solo il codice di richiesta (l'ho scelto). Vedere il metodo getErrorDialog in http://developer.android.com/reference/com/google/android/gms/common/GooglePlayServicesUtil.html#getErrorDialog – DiscDev