web-dev-qa-db-ja.com

マップを読み込めませんでした。 Googleサーバーへの接続エラー。これはおそらく認証の問題です

私は一日中検索しますが、答えが見つかりません...

すべて準備ができていますが、Googleマップはまだタブでフラグメントに表示できません

GoogleマップAndroid v2および正しい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 -->

溶液:

私は解決策を見つけました!!!

プライベートキーストアを使用してAPI_KEYを適用する場合。 Eclipseを使用してアプリケーションをアップロードおよびインストールすることはできません。

自分で.apkファイルをデバイスにアップロードしてインストールする必要があります!

Tarsemとsrikanth grに感謝します!!

31
JackWu

googleから取得したAPI_KEYに問題があるようですAPI Accessですので、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 in AndroidManifest.xmlMustClear Application Data

アプリケーションデータをクリアするには:

いずれかSettings>Application Manager>Select Your Application > Click on Clear Dataに移動

OrMust Uninstall The Applicationの前にinstalling it !ドン'Re-installを行うためにCompletely Uninstall the Applicationしない限り、clear its Data completely

65
Tarsem Singh

私は非常に多くの時間を費やしました、同様の質問が多すぎます。

WIFI_STATEパーミッションを追加しようとしましたが、実際の問題はアプリケーションデータにありました。

マニフェストでAPIキーを変更した後、[〜#〜] must [〜#〜]アプリケーションの「データを消去」(または完全に再インストール)します。

これは私を助け、この投稿が誰かを助けることを願っています。

35
Oleksii K.

私の問題は、マニフェストに許可を追加することで解決しました。

<uses-permission Android:name="com.google.Android.providers.gsf.permission.READ_GSERVICES"/>
10
G. Kh.

私は同じ問題を抱えており、私の問題はコンソールでサービスを有効にしていないことでした:

  1. コンソールにアクセスします: https://code.google.com/apis/console/
  2. servicesセクションに移動します
  3. 有効にするGoogleマップAndroid API v2
  4. ドキュメントのすべての手順を実行します
6
moskis

Authに問題がある場合は、Logcatでパッケージ名を確認してください。 Android Studioを使用する場合は、build.gradleを確認してください。ファイルにapplicationIdSuffix '.dev'が含まれている場合。パッケージ名に.devを追加する必要があります。

e.i.パッケージ名は次のとおりです。

com.company.main

APIコンソールでの書き込み

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

5
Serafins

マニフェストの確認、権限の追加、Eclipseのsha1での新しいキーの作成など、人々が言っ​​たことをすべて実行した後、まだ機能していません。

adb uninstall com.example.hellomap

その後、Eclipseを再度実行します。デバイスが完全に新しいデータを取得していないように見えました。お役に立てれば。

4
ibpetr

デバッグキーを使用して、Eclipseからロードできました。私のAndroidManifest.xml

uses-permission Android:name="com.google.Android.providers.gsf.permission.READ_GSERVICES"
2
Dave

Android St​​udioでも同じ問題に直面していました。 Androidデバッガーに接続すると、Googleマップは表示されません。

~/.Android/debug.keystoreにあるデバッグキーストアのSHA1フィンガープリントを追加して修正しました。このキーストアはデフォルトで生成されると思います(確かではありません)。

Terminalの次のコマンドは、SHA1フィンガープリントを取得するために機能しました。

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

パスワードを求められたら、Enterキーを押すだけで何も入力しないでください。 (私の場合は働いた)

開発者コンソールでAndroidアプリケーションのAPIキーにこのフィンガープリントを追加します。

乾杯!

1
Abdullah Umer

マニフェストで許可を与えることで問題を修正しました

<uses-permission Android:name="com.google.Android.providers.gsf.permission.READ_GSERVICES"/>
1
Pramod J George

多くのケースをレビューし、マップを正常に実行した後、これらのことを念頭に置くことが重要です。

  • Android API 17、ブースエミュレーターおよびプロジェクト
  • Googleサービスを参照する
  • 必要に応じてAndroidサポートを使用します
  • ライブラリで次の順序を使用します:src、gen、google apis、Androidサポート、依存関係、プライベートライブラリ
  • 正しいAPIキーを使用する
  • データを消去し、アプリを再インストールします。
1
user2526136

Google Maps API v2(Google Maps Android API v2)ではない)を含む多くのサービスを構成しましたが、競合していました。不要なサービスを削除し、マニフェスト、クリーンインストール、デバイスにマップが表示されました。

1
Kulai

Android Studioを使用しているときにも、同じ問題に直面しました。

すべてのソリューションを紹介しましたが、まだ機能していませんでした。

問題は、最初のプロジェクトのセットアップ後にchanged my package nameを持っていることでした。パッケージ名の変更はManifestに反映されていましたが、build.gradleファイルには古いパッケージ名がありました。

Build.gradleにchanged package nameがあるとすぐに、Mapが機能し始めます。

それが誰かを助けることを願っています。

0
akshay

これらの多くは私を助けましたが、主な問題は、正しい署名がなかったことです。私はXamarinを使用しているため、IDEに組み込まれていないため、keytoolを使用してキーを生成する場合、アプリケーションには決して入りません。 .csprojファイルに次を追加する必要がありました。

<PropertyGroup>
   <AndroidKeyStore>True</AndroidKeyStore>
   <AndroidSigningKeyStore>maps.keystore</AndroidSigningKeyStore>
   <AndroidSigningStorePass>Android</AndroidSigningStorePass>
   <AndroidSigningKeyAlias>androiddebugkey</AndroidSigningKeyAlias>
   <AndroidSigningKeyPass>Android</AndroidSigningKeyPass>
</PropertyGroup>
0
user3591639

私は同じ問題に直面していました。私はいくつかの解決策を試しました-私のために働くものはありませんでした。私のために働いたのは、新しいAPIキーとGoogleプレイサービスのデータをクリアするをデバイス上で生成することでした。

0
QuenelleMan

私がこれまでに行った最も奇妙な間違いは、debug.keystoreからSHA1コードを取得することでした。

パスワードはありませんが、パスワードはAndroidでした

それが誰かを助けるかどうかはわかりませんが、私を助けました。さらに、完全なパッケージ名を使用すると、Javaソースコードファイルで見つけることができます。たとえば、私のものがあります。com.example.erikas.mapsdemo( :パッケージ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

0
Erikas

同じ問題がありました。ログを確認したところ、「サーバーで認証に失敗しました」と言われました。そこで、www.console.developers.google.comを確認し、パッケージ名が間違っていることがわかりました。 (このパッケージ名は自動的に書き込まれました)私はそれを正しく書いたので、すべてうまくいきます。

0

エラーは、リリース構成をGoogle Developers Consoleに追加したばかりのときにデバッグ構成を実行していたことです。だから、私はこれらの手順に従いました:

  1. 次を使用して、デバッグキーストアのsha1を取得します。

    keytool -list -v -keystore〜/ .Android/debug.keystore -alias androiddebugkey -storepass Android -keypass Android

  2. Goto https://console.developers.google.com にsha1 + packageを追加します。

  3. API_KEYをAndroidManifest.xmlファイルに追加します。

0
Israel Varea

必要なことは、コード内でデバッグキーを使用することだけです。アプリをアンインストールします。デバッグキーを使用して新しいアプリをインストールします。

0
Umberto

私の場合、うまくいったのはコマンドラインからインストールする必要があることです:

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

0
mt0s

デバッグ時に、~/.Android/debug.keystoreに追加のAPIキーを追加する必要がありました

このキーストアは自動的にセットアップされ、パスワードは「Android」ですか?

0
user3455805

私は同じ問題に直面しましたが、これには解決策があり、同じパッケージ名で別のGoogleアカウントからデバッグAPIキーを作成しようとしました。バグをクリアする手順:1.異なるgoogleアカウントで同じパッケージ名を持つ不要なapiキーを削除します。 2.この問題を解決するために、単一のアカウントでApiキー生成を維持してください。ありがとうございました。これを試して。

0
MohanRaj S

IntelliJでは、.SHA1キーが正しい、API keyが欠落していない、

PermissionおよびManifestの設定はすべて正しいです。

たぶん、あなたは右クリックをあなたのGoogle-Play-Services-libでやり直さなければならない

私はすべてのことをしました、そして、これは私のためにトリックをします。

0
Jongz Puangput

私は約1週間この質問にこだわっていました。そこで、実際のデバイスを使い始めました。しかしある日、私はCustonデバッグキーストア(Eclipse、Window-> Preferences-> Android-> Build-> Cusom debug keystore)をデフォルトのキーストアと同じに設定しようとします。 。もちろん、最初にGoogleコンソールでキーを取得しました。

これが役立つことを願っています!

0
patriot10

ケースでは、(上記の)何も機能しない場合、指紋の生成に間違ったdebug.keystoreファイルを使用している可能性があります。マシンに複数のdebug.keystoreファイルがある場合は、正しいdebug.keystoreを使用してSHA1フィンガープリントを生成していることを確認してください。

0
Kaps

チェックリスト:1. Android READ_GSERVICESのマニフェストで権限を確認します

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

  1. マニフェストに何らかの変更を加えた場合は、アプリケーションデータを消去します。

  2. .Androidフォルダーのdebug.keystoreを確認します。

    .Androidフォルダーにあるdebug.keystoreをアプリのdebug.keystoreに置き換えるだけで私の問題は解決しました。

0
user3804372