2012-12-10 9 views
14

Okay, hier ist das, was ich tat das exampleMap API v2 Authorization Failure

  1. mit Haben Sie die Debug-Schlüssel über keytool (sorgte dafür, es ist die der Debug-Schlüssel von Eclipse in den Einstellungen verwendet wird -> Android -> bauen)
  2. generiert den Schlüssel durch den Befehl

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

  3. Kopieren Sie klebte das SHA1 Summe in der Google API Console + mein Paket:

    Summe; com.my.package

  4. Aktiviert Google Map API v2 im selben Projekt in Google API Console

  5. kopiert zur Manifest-Anwendung in Meta-Daten.

  6. Über SDK-Manager heruntergeladen und das Projekt google-play-services_lib importiert und als Bibliotheksprojekt referenziert. Sowie der ActionBarSherlock.

  7. Bevor ich starte stelle ich sicher, dass die GooglePlayServices verfügbar sind.

Manifest:

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

<permission 
    android:name="com.my.package.permission.MAPS_RECEIVE" 
    android:protectionLevel="signature"/> 

<uses-permission android:name="com.my.package.permission.MAPS_RECEIVE"/> 
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 

Anwendung:

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

Die proguard Sachen sind zu hinzugefügt, aber ich jetzt nicht verschleiern.

DrugstoresMapActivity erstreckt SherlockFragmentActivity

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

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

</RelativeLayout> 

project.properties

target=android-17 
android.library.reference.1=../google-play-services_lib 
android.library.reference.2=../ActionBarSherlock 

Die ActionBarSherlock hat android-Support-v4 in libs, nicht das Hauptprojekt wenn es ankommt.

Die StartupActivity stellt sicher, dass DrugstoresMapActivity nur gestartet werden, wenn die Dienste verfügbar

private void attempt() { 
    int result = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getBaseContext()); 

    switch (result) { 
     case ConnectionResult.SUCCESS: 
      startActivity(new Intent(this, DrugstoresMapActivity.class)); 
      finish(); 
      break; 

     default: 
      GooglePlayServicesUtil.getErrorDialog(result, this, REQUEST_DIALOG) 
       .show(); 
      break; 
    } 
} 

doppelt überprüft die Tasten sind in Ordnung. Keine Ahnung, was ich hier verpasst habe.

+0

nur neugierig, wie hast du das herausgefunden? Ich bin jeden Tag auf Techblogs und auf den Android-Entwicklerdokumenten, und ich habe nur zufällig davon erfahren, als ich versuchte, ein unmögliches Problem mit Android Maps V1 in meinem bestehenden Code zu lösen. – CQM

+0

Informieren Sie sich über was. Über den falschen Dienst aktiviert? Wenn ja, hättest du das in der Antwort fragen sollen, nicht die Frage, um es klarer zu machen.Ich habe den Vorschlag irgendwo in StackOverflow gefunden, nachdem ich stundenlang verschiedene Probleme bezüglich dieses Problems durchgesehen habe. –

+0

nein, wie hast du über Android Karten v2 herausgefunden, merke ich bin * nur * zwei Wochen zu spät, aber ich denke, es ist eine große Sache – CQM

Antwort

46

Falscher Dienst wurde aktiviert. Stellen Sie sicher, dass "Google Maps Android API v2" und nicht "Google Maps API v2" aktiviert ist und generieren Sie den API-Schlüssel erneut.

+2

+1 Bingo .. :) Ich steckte mit dem API-Schlüssel, löschen Keystores, umbenennen App-Paket .. –

+1

Nach der Aktivierung von Google Maps Android API v2 war es immer noch nicht für mich arbeiten. Also habe ich versucht, das Ziel sdk in meinem Manifest auf 17 von 16 zu ändern und das hat es behoben. Beachten Sie, dass das Zurückschalten auf 16 ebenfalls funktionierte. –

+1

Oh mein Wort - das war auch mein Problem und ich zog mir die Haare aus. Vielen Dank!! – SNyamathi