2010-09-14 13 views
11

यह आसान होना चाहिए, लेकिन मैं इस पर कोई जानकारी नहीं मिल सकता है ...हो रही पैकेज स्ट्रिंग प्रकट

मैं बस एंड्रॉयड प्रकट में पैकेज मूल्य पढ़ना चाहते हैं ...

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="THIS" 

कारण सरल है मुझे संदर्भ.getResources()। GetIdentifier (...) और मुझे पैकेज की आवश्यकता है।

क्योंकि इस कोड को अन्य ऐप्स में पुन: उपयोग किया जाएगा, जब मैं इसे निर्यात करता हूं तो इसे मूर्ख प्रमाण बनाना चाहता हूं और इसलिए हर बार मूल्य को बदलना नहीं है।

कोई भी जानता है कि यह कैसे करें?

उत्तर

17

एक गतिविधि के भीतर, आप बस getPackageName कॉल कर सकते हैं()। http://developer.android.com/reference/android/content/pm/PackageInfo.html

अपने अनुप्रयोग संस्करण के लिए एक TextView स्थापित करने का उदाहरण:: आप प्रकट से अतिरिक्त डेटा की जरूरत का क्या किया जाए, तो आप PackageInfo वर्ग का उपयोग कर सकते

try { 
     PackageManager pm = getPackageManager(); 
     PackageInfo packageInfo = pm.getPackageInfo(this.getPackageName(), 0); 
     TextView version = (TextView) findViewById(R.id.version); 
     version.setText(packageInfo.versionName); 
    } catch (NameNotFoundException e) {} 
+1

काम करेगा, यह सीम पूरी तरह से सही नहीं है, क्योंकि packageInfo.versionName एप्लिकेशन को वापस करता है Id gradle फ़ाइल में परिभाषित किया गया है और पैकेज विशेषता नहीं है I एन आपका मैनिफेस्ट। ज्यादातर मामलों में यह वही है जो ठीक काम करेगा, लेकिन जब आप बिल्डफ्लोर्स के साथ काम कर रहे हैं जो आपके आवेदन को बदलते हैं तो यह अब काम नहीं करेगा। मुझे इसके लिए कोई समाधान नहीं मिला है, लेकिन 'आर' वर्ग के माध्यम से पैकेज विशेषता को एक्सेस करना है। अर्थात् पैकेज-विशेषता केवल 'आर' श्रेणी के लिए पैकेज नाम को प्रभावित करती है, न कि एप्लिकेशन आईडी या न ही आपके सामान्य वर्ग पैकेज –

2

अपने "मुख्य" Activity वर्ग से:

String package = this.getClass().getPackage().getName(); 
+6

इसका यह देखते हुए कि यह कार्य तभी काम करेंगे लायक अपने मुख्य गतिविधि एक पैकेज में है जिसमें मैनिफेस्ट पैकेज (और नहीं, उदाहरण के लिए एक उप पैकेज) –

+0

वर्ग का पैकेज मैनिफेस्ट में परिभाषित पैकेज से मेल नहीं खाता है, इसलिए यह सही नहीं है, हालांकि अधिकांश में मामले यह –

संबंधित मुद्दे