एंड्रॉइड एप्लिकेशन आईडी कैसे प्राप्त करें?


92

एंड्रॉइड में, मुझे प्रोग्राम (या किसी अन्य विधि से) आवेदन की आईडी कैसे मिलती है, और मैं उस आईडी का उपयोग करके अन्य एप्लिकेशन के साथ कैसे संवाद कर सकता हूं?

जवाबों:


143

यदि आपकी applicationIdग्रेडेल में परिभाषित मूल्य की तलाश है , तो आप बस उपयोग कर सकते हैं

BuildConfig.APPLICATION_ID 

29
यह इतना उपयोगी नहीं होगा यदि आप एक एंड्रॉइड लाइब्रेरी लिख रहे हैं
— साइमन फेदरस्टोन

मैं अपने एस्प्रेसो परीक्षण में applicationId प्राप्त करने के लिए इसका उपयोग करता हूं: निजी वैल लक्ष्यकंटेक्स = इंस्ट्रूमेंटेशन ।getTargetContext () निजी वैल applictionId = targetContext.getPackageName ();
— a_subscriber

@SimonFeatherstone क्या आपने कभी पता लगाया कि इसे मॉड्यूल से कैसे किया जाता है?
— मिहाई फिशर

@MihaiFischer आपको मॉड्यूल / लाइब्रेरी को इनिशियलाइज़ करने के लिए एक फंक्शन बनाने की जरूरत है और फिर उस तरह की जानकारी में पास होना चाहिए।
— साइमन फेदरस्टोन

48

यदि application idआप इसका उल्लेख कर रहे हैं package name, तो आप विधि का उपयोग कर सकते हैं Context::getPackageName( http: // http: //developer.android.com/reference/android/content/Context.html#getPackageName%28%29 )।

यदि आप अन्य एप्लिकेशन के साथ संवाद करना चाहते हैं, तो कई तरीके हैं:

  1. किसी अन्य एप्लिकेशन की गतिविधि शुरू करें और "आशय" के "अतिरिक्त" में डेटा भेजें
  2. विशिष्ट कार्रवाई / श्रेणी के साथ एक प्रसारण भेजें और अतिरिक्त में डेटा भेजें
  3. यदि आपको केवल संरचित डेटा साझा करने की आवश्यकता है, तो सामग्री प्रदाता का उपयोग करें
  4. यदि अन्य एप्लिकेशन को लगातार पृष्ठभूमि में चलाने की आवश्यकता है, तो सर्वर का उपयोग करें और सेवा में खुद को "बांधें"।

यदि आप अपनी सटीक आवश्यकता को विस्तृत कर सकते हैं, तो समुदाय आपकी बेहतर मदद कर सकेगा।


क्या होगा यदि मैं ऐप्स की सूची दिखाना चाहता हूं, और आईडी को पूर्णांक के रूप में रखने की आवश्यकता है, जैसे सभी सूची-एडेप्टर की आवश्यकता है? मैं इंस्टॉल-टाइम का उपयोग कर सकता हूं, लेकिन यह एक लंबे प्रकार का है। यह अभी भी मदद करने के लिए कास्टिंग होगा?
— एंड्रॉयड डेवलपर

4
पैकेज का नाम हमेशा ApplicationId नहीं होता है, जब आप इसे build.gradle के माध्यम से सेट करते हैं!
— जेमशीट इस्केंडरोव

2
वास्तव में, Context.getPackageName() करता है आवेदन आईडी और वापसी नहीं (हालांकि वे आम तौर पर एक ही हैं) पैकेज का नाम। विधि का कुछ भ्रमित नाम विरासत है। स्रोत: developer.android.com/studio/build/application-id
— LoPoBo

संदर्भ :: getPackageName काम नहीं करता है यदि आप कोटलिन का उपयोग करते हैं, तो यह "फ़ंक्शन getPackageName (Kotlin प्रतिबिंब उपलब्ध नहीं है)"
— Derek Zhu

6

मुझे यकीन नहीं है कि आप किस "एप्लिकेशन आईडी" का जिक्र कर रहे हैं, लेकिन आपके आवेदन की एक विशिष्ट पहचानकर्ता के लिए आप इसका उपयोग कर सकते हैं:

getApplication ()। getPackageName () आपकी वर्तमान गतिविधि से विधि


2
प्रत्येक इंस्टॉल किए गए एप्लिकेशन की एक अद्वितीय आईडी होती है ... क्या अन्य एप्लिकेशन से किसी एप्लिकेशन की अद्वितीय आईडी प्राप्त करना संभव है
— 9

3
है ना getApplicationContext().getPackageName()?
— superarts.org

मान लीजिए आप एक रिहाई या डिबग की तरह निर्माण प्रकार है, और आप एक प्रत्यय जोड़ लिया है, उदाहरण के लिए, "डिबग" मुख्य आवेदन से अलग करने, उस मामले getpackageName में () दे देंगे आप originalpackagename.debug
— अमन वर्मा


2

चरण 1: Google Play Store खोलें

चरण 2: ऐप स्टोर में कोई भी ऐप खोलें उदाहरण: फेसबुक

स्टेप 3: किसी भी ऐप पर क्लिक करें और ब्राउजर लिंक पर देखें और आखिर में id = com.facebook.katana & hl = en वहां होगा और यह आपका ऐप यूनिक आईडी है।


1

आपके द्वारा अपना आवेदन चलाने की प्रक्रिया को पूरा करने की प्रक्रिया

अंतिम स्थिर int android.os.Process.myPid ()
इस प्रक्रिया के पहचानकर्ता को वापस करता है, जिसका उपयोग किलप्रोसेस (int) और सेंसिग्नल (int, int) के साथ किया जा सकता है।


1

मुझे यकीन नहीं है कि आपको ऐप / इंस्टॉलेशन आईडी की आवश्यकता क्या है, लेकिन आप एंड्रॉइड डेवलपर्स से एक महान लेख में मौजूदा संभावनाओं की समीक्षा कर सकते हैं:

सारांश में:

  • UUID.randomUUID() पहली बार आईडी बनाने के लिए एक ऐप इंस्टॉलेशन और सिंपल रिट्रीवल के बाद चलता है
  • TelephonyManager.getDeviceId() वास्तविक उपकरण पहचानकर्ता के लिए
  • Settings.Secure.ANDROID_ID अपेक्षाकृत आधुनिक उपकरणों पर

0

PackageInfo.sharedUserIdक्षेत्र उपयोगकर्ता आईडी दिखाएगा प्रकट में सौंपा ।

यदि आप चाहते हैं कि दो एप्लिकेशन एक ही उपयोगकर्ता के पास हों, तो वे एक-दूसरे के डेटा को देख सकते हैं और एक ही प्रक्रिया में चल सकते हैं, फिर उन्हें एक ही उपयोगकर्ता-आईडी को असाइन करें:

android:sharedUserId="string"

एक ही शेयर्सUserId वाले दो पैकेजों में भी एक ही हस्ताक्षर होना चाहिए।

मैं सही दिशा में कुहनी मारने के लिए भी यहाँ पढ़ने की सलाह दूंगा।


2 अलग आवेदन उपयोग समान पैकेज नाम का अर्थ है, आवेदन डेटा साझा कर सकते हैं ...?
— arams

नहीं। यदि दो अनुप्रयोगों में एक ही शेयरयूजरआईड है और एक ही हस्ताक्षर के साथ हस्ताक्षर किए जा सकते हैं तो डेटा साझा कर सकते हैं। पैकेज का नाम कोई समस्या नहीं है।
— विल

0

यदि पूरा उद्देश्य किसी अन्य एप्लिकेशन के साथ डेटा का संचार करना है, तो Intent के sendBroadcast विधियों का उपयोग करें।


0

यदि आप नए ** ग्रैड बिल्ड सिस्टम का उपयोग कर रहे हैं तो getPackageNameअजीब तरह से एप्लीकेशन आईडी लौटाएगा, पैकेज नाम नहीं। तो मास्टरगौरव का जवाब सही है लेकिन उन्हें ++ के साथ शुरुआत करने की आवश्यकता नहीं है

यदि आवेदन आईडी द्वारा, आप पैकेज के नाम का जिक्र कर रहे हैं ...

यहां मतभेदों के बारे में अधिक देखें ।

** इस बिंदु पर इतना नया नहीं है

++ मुझे पता है कि उनके जवाब ने 2011 में सही अर्थों में बनाया


0

एंड्रॉइड ऐप ईएस फाइल एक्सप्लोरर उपयोगकर्ता एप्स अनुभाग में एंड्रॉइड पैकेज का नाम दिखाता है जो बिटवर्डन के लिए उपयोगी है। बिटवर्डन इसे "एंड्रॉइड एप्लिकेशन पैकेज आईडी (या पैकेज नाम)" के रूप में संदर्भित करता है।


0

इंस्टॉलेशन को ट्रैक करने के लिए, आप उदाहरण के लिए एक पहचानकर्ता के रूप में एक यूयूआईडी का उपयोग कर सकते हैं, और स्थापना के बाद पहली बार एक नया ऐप बनाते हैं। यहाँ एक वर्ग का एक स्केच है जिसे "इंस्टालेशन" नाम दिया गया है जिसमें एक स्टैटिक विधि इंस्टालेशन है। संदर्भ (संदर्भ)। आप स्थापना फ़ाइल में अधिक स्थापना-विशिष्ट डेटा लिखने की कल्पना कर सकते हैं।

public class Installation {
private static String sID = null;
private static final String INSTALLATION = "INSTALLATION";
public synchronized static String id(Context context) {

    if (sID == null) {  
       File installation = new File(context.getFilesDir(), INSTALLATION);
       try {
           if (!installation.exists())
               writeInstallationFile(installation);
           sID = readInstallationFile(installation);
       } catch (Exception e) {
           throw new RuntimeException(e);
       }
    }
   return sID;
}

private static String readInstallationFile(File installation) throws IOException {
   RandomAccessFile f = new RandomAccessFile(installation, "r");
   byte[] bytes = new byte[(int) f.length()];
   f.readFully(bytes);
   f.close();
   return new String(bytes);
}

private static void writeInstallationFile(File installation) throws IOException {
   FileOutputStream out = new FileOutputStream(installation);
   String id = UUID.randomUUID().toString();
   out.write(id.getBytes());
   out.close();
}

}

योन https://github.com/MShoaibAkram/Android-Unique-Application-ID पर अधिक देख सकते हैं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.