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

Не удалось загрузить карту. Ошибка при обращении к серверам Google. Вероятно, это проблема аутентификации

Я ищу все дни, и я не могу найти ответ...

все готово, но карта google по-прежнему не может отображаться на фрагменте с вкладкой

Я проверяю, что я уже включил google map android v2 и right API_KEY

Я не знаю, что случилось!

img

MainActivity.java:

public class MainActivity extends FragmentActivity implements
        ActionBar.TabListener {

    SectionsPagerAdapter mSectionsPagerAdapter;

    ViewPager mViewPager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        String titles[] = { this.getString(R.string.title_around),
                this.getString(R.string.title_map),
                this.getString(R.string.title_favorite),
                this.getString(R.string.title_achievement), };

        final ActionBar actionBar = getActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        mSectionsPagerAdapter = new SectionsPagerAdapter(
                getSupportFragmentManager());

        mViewPager = (ViewPager) findViewById(R.id.pager);
        mViewPager.setAdapter(mSectionsPagerAdapter);
        mViewPager
                .setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
                    @Override
                    public void onPageSelected(int position) {
                        actionBar.setSelectedNavigationItem(position);
                    }
                });

        for (int i = 0; i < titles.length; i++) {
            actionBar.addTab(actionBar.newTab().setText(titles[i])
                    .setTabListener(this));
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public void onTabSelected(Tab tab, FragmentTransaction fragmentTransaction) {
        mViewPager.setCurrentItem(tab.getPosition());
    }

    @Override
    public void onTabUnselected(ActionBar.Tab tab,
            FragmentTransaction fragmentTransaction) {
    }

    @Override
    public void onTabReselected(ActionBar.Tab tab,
            FragmentTransaction fragmentTransaction) {
    }

    public class SectionsPagerAdapter extends FragmentPagerAdapter {

        public SectionsPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            // TODO 在這邊決定哪個位置要給什麼 View(Fragment)
            Fragment fragment = null;
            // TODO 建議先在之前就初始化好 4 個 Fragment
            switch (position) {
            case 0:
                fragment = new AroundFragment();
                break;
            case 1:
                fragment = new MapsFragment();
                break;
            case 2:
                fragment = new FavoriteFragment();
                break;
            case 3:
                fragment = new AchievementFragment();
                break;
            default:
                break;
            }

            return fragment;
        }

        @Override
        public int getCount() {
            return 4;
        }

        @Override
        public CharSequence getPageTitle(int position) {
            // TODO 在這邊決定每一個 View 的 title
            switch (position) {
            case 0:
                return getString(R.string.title_around);
            case 1:
                return getString(R.string.title_map);
            case 2:
                return getString(R.string.title_favorite);
            case 3:
                return getString(R.string.title_achievement);
            }
            return null;
        }
    }

}

MapsFragment.java:

public class MapsFragment extends Fragment{
    static final LatLng NKUT = new LatLng(23.979548, 120.696745);
    private GoogleMap map;
    SupportMapFragment mMapFragment;
    public MapsFragment() {

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.map_fragment,container, false);

        map = ((SupportMapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap();

         mMapFragment = SupportMapFragment.newInstance();
         FragmentTransaction fragmentTransaction =
                 getFragmentManager().beginTransaction();
         fragmentTransaction.add(R.id.map,mMapFragment);
         fragmentTransaction.commit();

        return rootView;

    }
}

Map_fragment.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <fragment
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.SupportMapFragment" />

</RelativeLayout> 

Manifest.xml:

<!-- Google Map -->
<permission
        android:name="com.jertt.yummymap.permission.MAPS_RECEIVE"
        android:protectionLevel="signature"/>
<uses-permission android:name="com.jertt.yummymap.permission.MAPS_RECEIVE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<!-- The following two permissions are not required to use
     Google Maps Android API v2, but are recommended. -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

<!-- end -->
    <!-- Google Map API Key -->

    <meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="key" />

    <!-- end -->

Решение:

Я нашел решение!!!

Если вы используете private keystore для применения API_KEY. Вы не можете загружать и устанавливать приложение с помощью eclipse.

Вам необходимо загрузить файл .apk на свое устройство и установить его!

Спасибо Тарсем и срикант х помогите!!

4b9b3361

Ответ 1

похоже, что у вас есть проблемы с вашим API_KEY, который получен из Google Доступ к API, поэтому проверьте свои API_KEY, отпечатки сертификата и пакета имя

также использовать это внутри <manifest>

<uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" >
    </uses-feature>

а также проверить: <meta-data .... > должен находиться внутри тега <application>


PS.

1. Также попробуйте добавить следующие разрешения

<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>

2. After changing API key в AndroidManifest.xml Обязательно Clear Application Data

Очистить данные приложения:

Либо Перейдите к Settings>Application Manager>Select Your Application > Click on Clear Data

Или Must Uninstall The Application до installing it ! Примечание Не Re-install, если вы не Completely Uninstall the Application, чтобы clear its Data completely

Ответ 2

Я провел так много времени, вопросов слишком много.

Я попытался добавить собственное разрешение, разрешение WIFI_STATE, но реальная проблема была в данных приложения.

После изменения ключа API в манифесте вы ДОЛЖНЫ "Очистить данные" вашего приложения (или полностью переустановить).

Это помогает мне, и я надеюсь, что этот пост поможет кому-то.

Ответ 3

Моя проблема была решена путем добавления разрешения манифеста:

<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>

Ответ 4

У меня такая же проблема, и моя проблема в том, что я не активировал сервис в консоли:

  • Перейдите в консоль: https://code.google.com/apis/console/
  • Перейдите в раздел службы
  • Включить API Google Maps Android v2
  • Следуйте всем шагам документации

Ответ 5

Если у вас возникла проблема с auth, проверьте в Logcat название своего пакета. Если вы используете Android Studio, посмотрите свой build.gradle. Когда файл содержит applicationIdSuffix '.dev'. Вы должны добавить .dev к вашему имени пакета.

e.i. имя пакета:

com.company.main

В консоли API пишите

... 9S.ME.DA.FE; com.company.main.dev

Ответ 6

Сделав все, что люди сказали, чтобы проверить мой манифест, добавив разрешения, создав новый ключ с sha1 в eclipse и т.д., и он все еще не работает, я просто сделал:

adb uninstall com.example.hellomap

а затем снова запустить затмение. Казалось, что устройство не получает совершенно новые данные. Надеюсь, это поможет.

Ответ 7

Я смог использовать отладочный ключ и загружать из eclipse. В моем AndroidManifest.xml

мне не удалось получить следующее разрешение:
uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"

Ответ 8

После просмотра большого количества случаев и успешного запуска карт эти вещи важны:

  • Используйте android api 17, эмулятор стенда и проект
  • Ссылка на службы google
  • При необходимости используйте поддержку Android.
  • Используйте следующий порядок в библиотеках: src, gen, google apis, поддержка android, зависимости и частные библиотеки.
  • Использовать правильный ключ api
  • Очистить данные, переустановить приложение.

Ответ 9

Я настроил множество сервисов, в том числе Google Maps API v2 (а не API Android Google Maps v2), который противоречил друг другу. После удаления нежелательной службы и создания нового ключа, в том числе в манифесте, чистая установка, карта появилась на устройстве.

Ответ 10

Я исправил проблему, предоставив разрешение в манифесте

<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>

Ответ 11

Я столкнулся с той же проблемой в Android Studio. Карты Google не будут отображаться при подключении к отладчику Android.

Я исправил его, добавив отпечаток SHA1 для хранилища отладки, расположенного в ~/.android/debug.keystore. Я думаю, что это хранилище ключей создано по умолчанию (не уверен, хотя).

Следующая команда в Терминале работала, чтобы получить отпечаток SHA1:

keytool -list -v -keystore ~/.android/debug.keystore 

Когда он запрашивает пароль, не вводите ничего, просто нажмите enter. (Работал в моем случае)

Добавьте этот отпечаток пальца к ключу API для приложений Android в консоли разработчика.

Ура!

Ответ 12

В моем случае, что сработало, я должен был установить его через командную строку:

adb install/path/to/app/MyApp.apk

Ответ 13

Все, что вам нужно сделать, это использовать ключ отладки в вашем коде; удалите приложение; установите новое приложение с помощью отладочного ключа.

Ответ 14

В случае, если ничего (выше указано) не работает, есть хорошая вероятность, что вы используете неправильный файл debug.keystore для создания отпечатка пальца. Если на вашем компьютере имеется несколько файлов debug.keystore, убедитесь, что вы используете правильный файл debug.keystore для создания отпечатка SHA1.

Ответ 15

Многие из них помогли мне, но главная проблема заключалась в том, что у меня не было правильного подписания. Я использую Xamarin и, следовательно, не встроен в среду IDE, поэтому, когда я буду генерировать ключ с помощью keytool, он никогда не попадет в приложение. Мне пришлось добавить следующее в файл .csproj:

<PropertyGroup>
   <AndroidKeyStore>True</AndroidKeyStore>
   <AndroidSigningKeyStore>maps.keystore</AndroidSigningKeyStore>
   <AndroidSigningStorePass>android</AndroidSigningStorePass>
   <AndroidSigningKeyAlias>androiddebugkey</AndroidSigningKeyAlias>
   <AndroidSigningKeyPass>android</AndroidSigningKeyPass>
</PropertyGroup>

Ответ 16

Ошибка для меня заключалась в том, что я запускал конфигурацию отладки, когда я только что добавил конфигурацию выпуска в Google Developers Console. Итак, я выполнил следующие шаги:

  • Получите sha1 для своего хранилища отладки, используя:

    keytool -list -v -keystore ~ ​​/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android

  • Откройте https://console.developers.google.com и добавьте пакет sha1 +.

  • Добавьте свой API_KEY в ваш файл AndroidManifest.xml.

Ответ 17

В IntelliJ..если вы уверены, что клавиша SHA1 верна, API key не хватает,

Permission и любая настройка в Manifest верна.

Возможно, вам нужно щелкнуть правой кнопкой мыши в Google-Play-Services-lib и скомпилировать его снова

Я сделал все, и это делает трюк для меня.

Ответ 18

Моя самая странная ошибка, которую я сделал до сих пор, заключалась в получении кода SHA1 из debug.keystore.

Я, хотя у него нет пароля, но пароль был android

Не уверен, что это помогает кому-то, но это помогло мне. Плюс используйте полное имя пакета, вы можете найти его в файле исходного кода Java. Например, есть моя: com.example.erikas.mapsdemo (выглядит так: package com.example.erikas.mapsdemo;)

Поэтому, когда вы пытаетесь получить ключ API, используйте такой ввод:

XX:XX:XX:XX:XX:17:C9:22:BB:BD:7C:87:12:83:2D:XX:XX:XX:XX:XX;com.example.erikas.mapsdemo

Таким образом, моя собственная ошибка была неправильным кодом SHA1 и неправильным пакетом. Но удачливейше - я понял это после 2 дней головной боли!: D

Ответ 19

При отладке мне нужно было добавить дополнительный ключ API для ~/.android/debug.keystore

Это хранилище ключей автоматически настроено для вас, а пароль - "андроид"?

Ответ 20

У меня возникла та же проблема. У меня есть решение для этого, я попытался создать отладку api-ключа из другой учетной записи google с тем же именем пакета. Шаг, чтобы очистить ошибку: 1. Удалите ненужный ключ api с тем же именем пакета в другой учетной записи google. 2.Пожалуйста, поддерживайте генерацию ключей Api в одной учетной записи для решения этой проблемы. Спасибо. Попробуйте это.

Ответ 21

Я застрял в этом вопросе около недели. Поэтому я начал использовать реальное устройство. Но однажды я попытаюсь установить Custon debug keystore (Eclipse, Window → Preferences → Android → Build → Cusom debug keystore) так же, как и по умолчанию. И все стали работать. Конечно, сначала у меня есть ключ на консоли Google.

Надеюсь, это поможет!

Ответ 22

У меня была та же проблема. Я попробовал несколько решений - ни один не работал у меня. Для меня работала генерация нового ключа API и Сброс данных службы Google на моем устройстве.

Ответ 23

Контрольный список:  1. Проверьте разрешение в Android Manifest для READ_GSERVICES

< use-permission android: name= "com.google.android.providers.gsf.permission.READ_GSERVICES" /" >

  1. Очистить данные приложения, если вы внесли некоторые изменения в манифест.

  2. Проверьте файл debug.keystore в папке .android.

    Мой вопрос был разрешен только путем замены debug.keystore, расположенного по адресу .android папку от debug.keystore вашего приложения.

Ответ 24

Я также столкнулся с такой же проблемой при использовании Android Studio.

Я передал все решения, но все же он не работал.

Проблема заключалась в том, что у меня есть changed my package name после начальной настройки проекта. Изменение имени пакета было отражено в Manifest, но в build.gradle было указано старое имя пакета.

Как только у меня есть changed package name в build.gradle, Map начинает работать.

Надеюсь, что это поможет кому-то.

Ответ 25

У меня была та же проблема. Я проверил журналы, и было сказано, что "Ошибка аутентификации на сервере". Итак, я проверил www.console.developers.google.com и узнал, что имя пакета неверно. (Это имя пакета было автоматически записано) Я написал его правильно, и все работает хорошо.