Когато използвам Android API V2 на Google Maps, следвам документацията за настройка на Google Play Services за да направя проверка, за да се уверя, че услугите на Google Play са инсталирани, като използвам следния код в моята основна дейност:
@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);
}
Това работи добре. Забелязах обаче, че на някои от по-старите телефони с Android, които имам наоколо (предимно работещи с 2.2), липсват както GooglePlayServices, така и самото приложение Google Maps.
LogCat ще докладва тази грешка: API на Google Карти за Android: приложението Google Карти липсва.
Въпрос - как мога да извърша проверка, подобна на тази по-горе, за наличността на Google Карти на дадено устройство? Второ, ако потребителят вече има инсталиран Google Maps, мисля, че проверката ще трябва да се увери, че инсталираната версия е съвместима с V2 на Android Maps API.
Актуализация Ето моя метод setupMapIfNeeded(), който се извиква в края на onCreate(). Това е мястото, където мисля, че бих искал да определя дали Google Maps е инсталиран и да предупредя потребителя, вижте блока 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);
}
}
}