2015-11-12 6 views
15

Sto tentando di aggiungere Google map all'app di maggio, quindi ho preso la chiave API. Sfortunatamente quando ho inserito la chiave API in manifest.xml attraverso un tag meta-data, ha automaticamente inserito un altro tag meta-data al momento della compilazione, come mostrato di seguito. Ora genera l'errore sotto indicato. Il caso peggiore è che, anche cancellando ognuno di essi o entrambi, genera automaticamente entrambi i tag in fase di compilazione e genera l'errore.Android: la chiave API può essere specificata solo una volta <meta-data> duplicati

Qualsiasi aiuto?

errore

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 meta tag

<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

ci mostri l'intero manifesto file? – Emil

+0

aggiornato. grazie – user2486322

+0

Prova e rimuovi 'com.google.android.geo.API_KEY' questo tag meta data dal tuo manifest. Non so perché è stato rigenerato. Stai modificando il file manifest corretto? '(app/src/main/AndroidManifest.xml)' – Emil

risposta

51

Eliminare la voce di metadati "com.google.android.maps.v2.API_KEY".

La voce "com.google.android.geo.API_KEY" è sufficiente per entrambi i servizi Maps e Places.

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


EDIT - Google ha aggiornato i propri documenti per chiamare in modo esplicito questo fuori ora:

  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

Questa è la risposta, grazie – sdelvalle57

+0

questa è la soluzione perfetta – R2R

Problemi correlati