Android - Не удалось найти информацию о поставщике для com.google.settings в примере MapView

Я пытаюсь реализовать пример MapView, который определен в примере Hello Hello, но теперь я столкнулся с этой ошибкой:

Failed to find provider info for com.google.settings

Любая идея, почему это происходит?

Ответ 1

Пример MapView по умолчанию не устанавливает ключ API. Поэтому вы должны установить его. Вот шаг за шагом:

  • Получить MD5 из вашей системы

    %JAVA_HOME%\bin\keytool.exe -list -alias androiddebugkey -keystore "%userprofile%\.android\debug.keystore" -storepass android -keypass android
    
  • Получить ключ API, вставив сгенерированный MD5 на эту страницу:
    http://code.google.com/android/maps-api-signup.html

  • Вставьте сгенерированный ключ API в {your_project_root}/res/layout/map.xml

    <com.google.android.maps.MapView
        android:id="@+id/myMapView"
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"
        android:enabled="true"
        android:clickable="true"
        android:apiKey="paste_generated_api_key_here"
    />
    
  • В AndroidManifest.xml убедитесь, что в тэге application есть тег ниже:

    <uses-library android:name="com.google.android.maps" />
    

    а также следующий тег в тэге manifest:

    <uses-permission android:name="android.permission.INTERNET" />
    
  • Обновите свой проект и запустите

Примечание:

  • Путь к файлам keytool.exe, debug.keystore и map.xml может отличаться в вашей системе.
  • Если вы публикуете свое приложение, обязательно зарегистрируйте другой ключ API.
  • Если вы не правильно установили ключ API, ваше приложение не сработает на телефоне, и сообщение об ошибке, вероятно, будет "... неожиданно остановилось". Повторите попытку. "Force close"

Подробнее на http://d.android.com/guide/tutorials/views/hello-mapview.html

Ответ 2

Если вы убедились, что имеете разрешение INTERNET и правильно создали API-ключ, и поместили его в android:apiKey, и эта же ошибка все еще происходит, вот еще одна вещь, чтобы проверить: подписано ли ваше приложение с тем же сертификатом, который вы использовали для ключа API Карт?

Инструменты сборки Android используют разные сертификаты для отладочных сборников и для сборки релизов. Если вы создали контрольную сумму MD5 и ключ API для сертификата выпуска (тот, который вы используете в приложении "Экспорт приложений для Android" для создания .apk), он не будет работать в отладочных сборках - и наоборот.

Вы можете узнать, где находится хранилище отладки в Eclipse Preferences > Android > Build. Вы можете генерировать контрольную сумму MD5 и ключ API для нее так же, как и для вашего сертификата выпуска. Пароль по умолчанию для отладочного хранилища ключей - "андроид".

Здесь официальные документы об отладочном хранилище

Ответ 3

Еще одна вещь, которую нужно проверить:

У меня была эта проблема (вернее, моя проблема заключалась в том, что карта не показывалась). Я просмотрел учебник по просмотру карты и поместил тег "use-permission" внутри тега приложения по ошибке. Он должен быть непосредственно под тегом манифеста, например:

<?xml version="1.0" encoding="utf-8"?>
<manifest [...]>
  <uses-sdk [...] />
  <uses-permission android:name="android.permission.INTERNET" />

  <application android:icon="@drawable/icon" android:label="@string/app_name">
    <uses-library android:name="com.google.android.maps" />
    [...]
  </application>
</manifest>

Очень простая ошибка, но мне потребовалось некоторое время, чтобы ее найти. Надеюсь, это поможет кому-то еще!

Ответ 4

Просто просмотрите Здравствуйте, MapView:

Убедитесь, что вы вошли в строку AndroidManifest.xml для разрешений:

<uses-permission android:name="android.permission.INTERNET" />

Кроме того, у вас есть API-интерфейс Google Map?
Поместите его в определение макета MapView:

<com.google.android.maps.MapView
    android:id="@+id/mapview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:clickable="true"
    android:apiKey="Your Maps API Key"
/>

Другое упоминание об ошибке: GGroups - MapView, отображающий черный экран после обновления до 1.5

Ответ 5

Я только столкнулся с этой проблемой в эмуляторе, и я обнаружил, что единственный способ избежать этой ошибки - перезапустить эмулятор.