При использовании Google Maps Android API V2 я следую документации по настройкам Google Play, чтобы проверить, чтобы службы 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 Maps для Android: приложение Google Maps отсутствует.
Вопрос - как я могу выполнить аналогичную проверку с приведенной выше для доступности Google Maps на устройстве? Во-вторых, если у пользователя уже установлен Google Maps, я думаю, что проверка должна убедиться, что их установленная версия совместима с V2 API Android Maps.
Обновление Вот мой метод setupMapIfNeeded(), который вызывается в конце onCreate(). Вот где я думаю, что хочу определить, установлены ли Карты Google и предупреждают пользователя, см. Блок 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);
}
}
}