Как определить устройство Android, поддерживает ли он API карт google
В настоящее время я разрабатываю приложение для Android, использующее API карт Google.
Мне интересно, что все устройства для Android поддерживают API карт, потому что этот api является оптическим api, и это дополнение к платформе.
Я обеспокоен тем, что мое приложение не сможет работать на этом устройстве.
То, что мне нужно знать, - это программное обнаружение API карты поддержки устройств, а также исключение и сделать что-то еще.
Поскольку использование возможностей карты - это только одна из особенностей моего приложения, я бы хотел, чтобы те устройства, которые не поддерживают map api, могут загружать и запускать мое приложение, не выполняя другие функции моего приложения.
Любые комментарии или предложения приветствуются
Ответы
Ответ 1
Спасибо за помощь всем своим парням! все ваше предложение мне полезно!
Я написал простое приложение, которое может быть развернуто на эмуляторе None-Google-Map API, и обнаруживать присутствие Google API проблематично.
Что я сделал, я указал <uses-library android:name="com.google.android.maps" android:required="false" />
(но атрибут "требуется" для android работает только для 2.1 и не работает для 1.6. Мне нужно будет выяснить, почему. Когда я посмотрел документацию, он говорит, что это отнесено к поддержке 1.6)
Таким образом, я могу развернуть приложение на эмулятор.
Во-вторых, я создал активность карты, которая называется HelloMaps
В моей основной деятельности
try{
mapActivity = new Intent(TestApp.this, HelloMaps.class);
startActivityForResult(mapActivity, 0);
}catch(NoClassDefFoundError e){
(Toast.makeText(TestApp.this, "Google Map API not found", Toast.LENGTH_LONG)).show();
}
Это вызовет исключение и скажет мне, что устройство не может выполнять активность карты.
Ответ 2
Я использовал следующее решение в дополнение к описанному
<uses-library android:name="com.google.android.maps" android:required="false"/>
в другом ответе:
public void mapClick(View view)
{
try
{
// check if Google Maps is supported on given device
Class.forName("com.google.android.maps.MapActivity");
this.startActivity(new Intent(this, MyMapActivity.class));
}
catch (Exception e)
{
e.printStackTrace();
UIUtils.showAlert(this, R.string.google_maps_not_found);
}
}
Ответ 3
Мне нужно было проверить, существовала ли библиотека перед попыткой вызова, поэтому я мог бы заполнить соответствующие настройки раньше. Вот код, который я придумал, чтобы проверить.
public static boolean hasSystemSharedLibraryInstalled(Context ctx,
String libraryName) {
boolean hasLibraryInstalled = false;
if (!TextUtils.isEmpty(libraryName)) {
String[] installedLibraries = ctx.getPackageManager()
.getSystemSharedLibraryNames();
if (installedLibraries != null) {
for (String s : installedLibraries) {
if (libraryName.equals(s)) {
hasLibraryInstalled = true;
break;
}
}
}
}
return hasLibraryInstalled;
}
И затем я проверяю, установлен ли com.google.android.maps
.
Ответ 4
Вы правы, некоторые Устройства, такие как Archos 5IT и Some Tablet, не имеют Google Maps, Android Market и т.д.
Вот мой код.
BelgianMap - это MapActivity:
try {
Intent i = new Intent(InfoGare.this, BelgianMap.class);
startActivityForResult(i, 0);
}
catch(ActivityNotFoundException e) {
Toast.makeText(context, "Google Map not found", Toast.LENGTH_LONG).show();
}
Но, возможно, есть другой способ найти это при создании вашего приложения и отобразить сообщение. Это может быть лучше.
Ответ 5
Это сработало для меня:
Использовать (недокументированные?) use-library android: name= "com.google.android.maps" android: required = "false" в манифесте. Это позволит установить на не поддерживаемое устройство maps-api.
Затем проверьте это:
http://android-developers.blogspot.com.ar/2009/01/can-i-use-this-intent.html
У вас все еще может быть весь код карты-api в приложении (нет необходимости в двух версиях), просто введите код пользовательского интерфейса, чтобы предотвратить его запуск. (В моем случае я выбрал предпочтение). Как уже отмечалось, техника, изложенная выше, эффективно предсказывает то, что не будет работать, и позволяет вам реагировать (без FC), а не просто реагировать на проблему.
Ответ 6
Дополнительный API применим только к эмулятору, насколько я знаю. 2 разные версии уровней API предназначены только для эмулятора, у реальных устройств все должны иметь API-интерфейс карт. Думаю,
Ответ 7
Если вы используете googlemaps в своем приложении, вы должны включить следующее в свой манифест .xml внутри тегов приложения
<uses-library android:name="com.google.android.maps" />
Это либо помешает пользователю установить приложение или увидеть его на рынке, но не уверен, что, возможно, и то, и другое.
Ответ 8
Используя adb
, для печати всех системных библиотек:
adb shell cmd package list libraries
Если ваше устройство поддерживает Карты Google, вы увидите следующую строку:
library:com.google.android.maps