2015-11-12 15 views
15

Tôi đang cố gắng thêm bản đồ Google vào ứng dụng có thể, vì vậy tôi đã lấy khóa API. Thật không may khi tôi chèn khóa API trong manifest.xml thông qua thẻ meta-data, nó tự động chèn một thẻ meta-data khác vào thời gian biên dịch như được hiển thị bên dưới. Bây giờ nó tạo ra lỗi được đề cập dưới đây. Trường hợp xấu nhất là, thậm chí tôi xóa từng người trong số họ hoặc cả hai, nó sẽ tự động tạo ra cả hai thẻ tại thời gian biên dịch một lần nữa và ném lỗi.Android - Khóa API chỉ có thể được chỉ định khi <meta-data> trùng lặp

Bất kỳ trợ giúp nào?

Lỗi

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) 

thẻ meta Manifast.xml

<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

bạn có thể chỉ cho chúng tôi toàn bộ manifest tập tin? Đã cập nhật – Emil

+0

. cảm ơn bạn – user2486322

+0

Thử và xóa 'com.google.android.geo.API_KEY' thẻ meta dữ liệu này khỏi tệp kê khai của bạn. Tôi không biết tại sao nó lại được tái sinh. Bạn có đang chỉnh sửa tệp kê khai chính xác không? '(app/src/main/AndroidManifest.xml)' – Emil

Trả lời

51

Xóa mục nhập siêu dữ liệu "com.google.android.maps.v2.API_KEY" của bạn.

Mục nhập "com.google.android.geo.API_KEY" là đủ cho cả dịch vụ Maps và Địa điểm.

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


EDIT - Google đã cập nhật tài liệu của họ để gọi một cách rõ ràng này ra ngay bây giờ:

  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

Đây là câu trả lời, cảm ơn – sdelvalle57

+0

đây là giải pháp hoàn hảo – R2R

Các vấn đề liên quan