Подтвердить что ты не робот

Как определить устройство Android, поддерживает ли он API карт google

В настоящее время я разрабатываю приложение для Android, использующее API карт Google.

Мне интересно, что все устройства для Android поддерживают API карт, потому что этот api является оптическим api, и это дополнение к платформе.

Я обеспокоен тем, что мое приложение не сможет работать на этом устройстве.

То, что мне нужно знать, - это программное обнаружение API карты поддержки устройств, а также исключение и сделать что-то еще.

Поскольку использование возможностей карты - это только одна из особенностей моего приложения, я бы хотел, чтобы те устройства, которые не поддерживают map api, могут загружать и запускать мое приложение, не выполняя другие функции моего приложения.

Любые комментарии или предложения приветствуются

4b9b3361

Ответ 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