2010-08-19 11 views
21

मैं वर्तमान में अपने आवेदन में मैपएक्टिविटी का उपयोग करता हूं। मैं इसे 2 एपीआई कुंजी के साथ उपयोग करता हूं। डिबगिंग के लिए एक, और "उत्पादन"नक्शा सक्रियता: प्रोग्राम एपीआईके प्रोग्रामेटिक

मैं XML लेआउट में इन मूल्यों को बदलने के साथ तंग आ गया हूँ के लिए एक:

<view class="com.google.android.maps.MapView" 
     android:id="@+id/myGmap" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:enabled="true" 
     android:clickable="true" 
     android:apiKey="@string/api_key_prod" /> 

मैं तंग आ गया हूँ हर बार apikey बदल सकते हैं और डिबग द्वारा prod बदलने का प्रयास करने हर बार।

क्या यह कुंजी मेरे आवेदन के ऑनक्रेट() के भीतर बदलना संभव है।

कल्पना कीजिए कि मेरे पास एक बुलियन वरीयता है जो इस तरह दिखती है: isDebug।

मैं अपने फोन पर थाई वरीयता देख सकता हूं और इसे डिफ़ॉल्ट रूप से उपयोगकर्ता एप्लिकेशन पर अक्षम कर सकता हूं। और कुछ ऐसा करें:

if (isDebug) 
    myMap.setApiKey(R.string.api_key_debug) 
else 
    myMap.setApiKey(R.string.api_key_prod) 

किसी भी मदद के लिए बहुत बहुत धन्यवाद।

उत्तर

7

आप दोनों को अपने लेआउट में विजेट नहीं है और जावा में एपीआई कुंजी सेट कर सकते हैं।

यदि आप गतिशील रूप से MapView अपने कन्स्ट्रक्टर के माध्यम से बनाते हैं, तो आप जावा कोड से एपीआई कुंजी की आपूर्ति कर सकते हैं, लेकिन फिर आपको गतिशील रूप से इसे अपने लेआउट में जोड़ना होगा।

कहा जा रहा है कि, मैं आपकी बिल्ड प्रक्रिया के माध्यम से समस्या का सामना करूँगा (उदाहरण के लिए, डीबग/उत्पादन निर्माण के आधार पर, सही एक्सएमएल फ़ाइल को सही निर्देशिका में कॉपी करें)।

+0

दुख की बात है कि। निश्चित उत्तर के लिए धन्यवाद। – SteelBytes

1

आपको Google मानचित्र ऑब्जेक्ट को गतिशील रूप से बनाना होगा। आपका लेआउट ऑब्जेक्ट बनाने के लिए केवल पैरेंट लेआउट को दूषित करेगा।

1

आप Product Flavors उपयोग करना चाहिए।

उदाहरण के लिए:

android { 
    ... 


    defaultConfig { 
     minSdkVersion 8 
     versionCode 10 
    } 


    productFlavors { 
     dev { 
      resValue "string", "google_maps_api_key", "DEV_API_KEY" 
     } 

     prod { 
      resValue "string", "google_maps_api_key", "PROD_API_KEY" 
     } 
    } 
} 
संबंधित मुद्दे