Возможно ли дополнительно запросить поддержку Google Maps API? - PullRequest
2 голосов
/ 12 марта 2012

У меня есть большое Android-приложение для моей компании, и мы активно используем API Google Maps для отображения позиций, в том числе с использованием наложений. Проблема теперь в поддержке планшетов с более низким уровнем Android. Поскольку подавляющее большинство не поддерживает карты Google, наше приложение даже не будет устанавливаться на них. Можно ли указать манифесту требовать API карт Google, только если он доступен на устройстве? Если нет в наличии, я бы просто отключил функции отображения.

1 Ответ

6 голосов
/ 12 марта 2012

Можно ли указать манифесту требовать API Google Maps, только если он доступен на устройстве?

Да.Включите android:required="false" в элемент <uses-library>, где вы запрашиваете Карты Google.Затем вы можете использовать отражение, чтобы увидеть, скажем, MapActivity существует в вашей виртуальной машине Dalvik. Если это так, вы находитесь на устройстве с поддержкой Maps и можете безопасно запустить карту.Если он не существует, вам необходимо отключить функции сопоставления.

Вот пример приложения , демонстрирующий это, с действием MapDetector LAUNCHER, которое видит, если MapActivityсуществует и затем либо перенаправляет управление на фактическую реализацию MapActivity, либо вызывает Toast, если приложение запускается на устройстве, не являющемся Google Maps.

Вот реализация действия MapDetector из этого проекта:

public class MapDetector extends Activity {
  @Override
  public void onCreate(Bundle instanceState) {
    super.onCreate(instanceState);

    try {
      Class.forName("com.google.android.maps.MapActivity");
      startActivity(new Intent(this, NooYawk.class));
    }
    catch (Exception e) {
      Toast
            .makeText(this,
                       "Google Maps are not available -- sorry!",
                       Toast.LENGTH_LONG)
            .show();
    }

    finish();
  }
}
...