2015-11-12 14 views
15

Ich versuche, Google Map in Mai App hinzufügen, so habe ich den API-Schlüssel genommen. Leider habe ich beim Einfügen des API-Schlüssels in die Datei "manifest.xml" über ein Metadaten-Tag automatisch ein weiteres Metadaten-Tag zur Kompilierungszeit eingefügt, wie unten dargestellt. Jetzt erzeugt es den unten erwähnten Fehler. Der schlimmste Fall ist, sogar wenn ich jeden von ihnen oder beide lösche, erzeugt er automatisch beide Tags zur Kompilierzeit und wirft den Fehler.Android - Der API-Schlüssel kann nur einmal <meta-data> Duplikate

Irgendwelche Hilfe?

Fehler

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.exampl.t_collect/com.exampl.t_collect.activity.MapActivity}: android.view.InflateException: Binary XML file line #6: Error inflating class fragment 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2389) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2441) 
     at android.app.ActivityThread.access$900(ActivityThread.java:151) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1354) 
......... 
Caused by: android.view.InflateException: Binary XML file line #6: Error inflating class fragment 
     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713) 
     at android.view.LayoutInflater.rInflate(LayoutInflater.java:755) 
     at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
     at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
.......... 
Caused by: java.lang.RuntimeException: The API key can only be specified once. It is recommended that you use the meta-data tag with the name: com.google.android.geo.API_KEY in the <application> element of AndroidManifest.xml 
     at com.google.maps.api.android.lib6.c.ad.a(Unknown Source) 
     at com.google.maps.api.android.lib6.a.e.a(Unknown Source) 
     at com.google.android.gms.maps.internal.CreatorImpl.b(Unknown Source) 

Manifast.xml Metatags

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.exampl.t_collect" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="14" 
    android:targetSdkVersion="21" /> 

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.CALL_PHONE" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="com.android.alarm.permission.SET_ALARM" /> 

<!-- 
To retrieve OAuth 2.0 tokens or invalidate tokens to disconnect a user. This disconnect 
option is required to comply with the Google+ Sign-In developer policies 
--> 
<uses-permission android:name="android.permission.USE_CREDENTIALS" /> 

<android:uses-permission 
    android:name="android.permission.WRITE_EXTERNAL_STORAGE" 
    android:maxSdkVersion="18" /> 
<android:uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
<android:uses-permission 
    android:name="android.permission.READ_EXTERNAL_STORAGE" 
    android:maxSdkVersion="18" /> 
<android:uses-permission android:name="android.permission.READ_CALL_LOG" /> 

<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 ACCESS_COARSE/FINE_LOCATION permissions are not required to use 
     Google Maps Android API v2, but are recommended. 
    --> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 

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

<application 
    android:allowBackup="true" 
    android:debuggable="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="com.exampl.t_collect.activity.Login" 
     android:label="@string/app_name" 
     android:launchMode="singleTask" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name="com.exampl.t_collect.activity.Dash" 
     android:label="@string/app_name" > 
    </activity> 
    <activity 
     android:name="com.exampl.t_collect.activity.Collection" 
     android:label="@string/title_activity_collection" > 
    </activity> 
    <activity 
     android:name="com.exampl.t_collect.activity.Collection1" 
     android:label="@string/title_activity_collection" > 
    </activity> 
    <activity 
     android:name="com.exampl.t_collect.activity.Collection2" 
     android:label="@string/title_activity_collection" > 
    </activity> 
    <activity 
     android:name="com.exampl.t_collect.activity.Advance" 
     android:label="@string/title_activity_advance" > 
    </activity> 
    <activity 
     android:name="com.exampl.t_collect.activity.Customer" 
     android:label="@string/title_activity_customer" > 
    </activity> 
    <activity 
     android:name="com.exampl.t_collect.activity.Data_store" 
     android:label="@string/title_activity_data_store" > 
    </activity> 
    <activity 
     android:name="com.exampl.t_collect.activity.DataRqeuset" 
     android:label="@string/title_activity_data_rqeuset" > 
    </activity> 
    <activity 
     android:name="com.exampl.t_collect.activity.Settings" 
     android:label="@string/title_activity_settings" > 
    </activity> 
    <activity 
     android:name="com.exampl.t_collect.activity.PastData_activity" 
     android:label="@string/title_activity_past_data" > 
    </activity> 

    <meta-data 
     android:name="com.google.android.gms.version" 
     android:value="@integer/google_play_services_version" /> 

    <receiver android:name="com.exampl.t_collect.util.UploadGPS" /> 

    <activity 
     android:name="com.exampl.t_collect.activity.findTrucks" 
     android:label="@string/title_activity_find_trucks" > 
    </activity> 

    <meta-data 
     android:name="com.google.android.geo.API_KEY" 
     android:value="AIzaSy*********************************" /> 
    <meta-data 
     android:name="com.google.android.maps.v2.API_KEY" 
     android:value="@string/google_maps_key" /> 

    <activity 
     android:name="com.exampl.t_collect.activity.MapsActivity" 
     android:label="@string/title_activity_maps" > 
    </activity> 
    <activity 
     android:name="com.exampl.t_collect.activity.MapActivity" 
     android:label="@string/title_activity_map" > 
    </activity> 
    <!-- Include the AdActivity and InAppPurchaseActivity configChanges and themes. --> 
    <activity 
     android:name="com.google.android.gms.ads.AdActivity" 
     android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" 
     android:theme="@android:style/Theme.Translucent" /> 
    <activity 
     android:name="com.google.android.gms.ads.purchase.InAppPurchaseActivity" 
     android:theme="@style/Theme.IAPTheme" /> 

    <meta-data 
     android:name="com.google.android.gms.wallet.api.enabled" 
     android:value="true" /> 

    <receiver 
     android:name="com.google.android.gms.wallet.EnableWalletOptimizationReceiver" 
     android:exported="false" > 
     <intent-filter> 
      <action android:name="com.google.android.gms.wallet.ENABLE_WALLET_OPTIMIZATION" /> 
     </intent-filter> 
    </receiver> 
</application> 

+0

Können Sie uns die gesamte Manifest zeigen Datei? – Emil

+0

aktualisiert. Vielen Dank – user2486322

+0

Versuchen Sie und entfernen Sie 'com.google.android.geo.API_KEY' dieses Metadaten-Tag aus Ihrem Manifest. Ich weiß nicht, warum es regeneriert wird. Bearbeiten Sie die richtige Manifestdatei? '(app/src/main/AndroidManifest.xml)' – Emil

Antwort

51

löschen Ihre "com.google.android.maps.v2.API_KEY" Meta-Dateneingabe.

Der Eintrag "com.google.android.geo.API_KEY" ist sowohl für die Karten- als auch für die Places-Dienste ausreichend.

Quelle: https://code.google.com/p/gmaps-api-issues/issues/detail?id=7824


EDIT - Google ihre Dokumente aktualisiert ausdrücklich das jetzt heraus anrufen:

  1. https://developers.google.com/places/android-api/start#api-key
  2. https://developers.google.com/maps/documentation/android-api/signup#add_the_api_key_to_your_application
+0

Dies ist die Antwort, danke – sdelvalle57

+0

das ist die perfekte Lösung – R2R