32

一日中検索しても答えが見つからない...

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

Google マップ Android v2 と正しい API_KEY を既に有効にしていることを確認します

何が起こったのかわかりません!

画像

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> 

マニフェスト.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 help に感謝します!!

4

25 に答える 25

69

API_KEYGoogle 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 keyAndroidManifest.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 Applicationclear its Data completely

于 2013-07-16T04:34:37.600 に答える
35

あまりにも多くの時間を費やしたので、同様の質問が多すぎます。

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

マニフェストで API キーを変更した後、アプリケーションの「データを消去」する (または完全に再インストールする) 必要があります

これは私を助け、この投稿が誰かに役立つことを願っています.

于 2013-07-30T13:01:25.037 に答える
6

私は同じ問題を抱えています。私の問題は、コンソールでサービスをアクティブにしなかったことです。

  1. コンソールに移動: https://code.google.com/apis/console/
  2. サービスセクションに移動
  3. Google Maps Android API v2 を有効にする
  4. ドキュメントのすべての手順に従ってください
于 2013-08-23T08:10:48.360 に答える
5

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

ei パッケージ名は次のとおりです。

com.company.main

API コンソールで書き込み

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

于 2014-09-12T22:03:48.797 に答える
4

マニフェストをチェックしたり、パーミッションを追加したり、Eclipse で sha1 を使用して新しいキーを作成したりするなど、人々が言っ​​たことをすべて実行した後、まだ機能していません。

adb uninstall com.example.hellomap

そして再び日食を経験します。デバイスが完全に新しいデータを取得していないようでした。お役に立てれば。

于 2013-09-12T21:23:36.750 に答える
1

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

<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
于 2013-12-13T12:07:15.997 に答える
1

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

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

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

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

パスワードの入力を求められたら、何も入力せずに Enter キーを押します。(私の場合はうまくいきました)

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

乾杯!

于 2014-11-24T12:11:35.117 に答える
1

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

于 2013-08-23T13:02:16.720 に答える
0

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

于 2013-10-08T12:23:51.073 に答える
0

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

于 2016-01-03T21:08:07.057 に答える
0

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

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

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

  2. https://console.developers.google.comに移動し、sha1+package を追加します

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

于 2014-08-13T11:56:02.243 に答える
0

IntelliJ ではSHA1、キーが正しいこと、API key欠落していないことを確認した場合、

Permissionの設定Manifestは正しいです。

おそらく、Google-Play-Services-libを右クリックして再度コンパイルする必要があります

私はすべてのことを行いましたが、これは私にとってはうまくいきます。

于 2014-08-20T14:54:35.940 に答える
0

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

パスワードはありませんが、パスワードは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

于 2014-09-09T08:54:30.423 に答える
0

私は同じ問題に直面していました。私はいくつかの解決策を試しましたが、どれもうまくいきませんでした。私にとってうまくいったのは、新しい API キーを生成し、デバイス上の Google Play サービスのデータを消去することでした

于 2015-04-30T16:57:13.953 に答える
0

コードでデバッグ キーを使用するだけです。アプリをアンインストールします。デバッグ キーを使用して新しいアプリをインストールします。

于 2013-09-20T20:37:30.320 に答える
0

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

adb インストール /path/to/app/MyApp.apk

于 2013-08-23T09:41:39.797 に答える
0

私はこの質問に約1週間行き詰まりました。それで実機を使い始めました。しかし、ある日、Custon デバッグ キーストア (Eclipse、ウィンドウ -> 設定 -> Android -> ビルド -> Cusom デバッグ キーストア) をデフォルトのものと同じに設定しようとしました。そして、すべてが機能するようになります。もちろん、まず Google コンソールでキーを取得します。

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

于 2014-12-05T01:15:13.033 に答える
0

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

于 2014-10-24T19:37:30.103 に答える