ऐप्लिकेशन की बुनियादी जानकारी

Android ऐप्लिकेशन, Kotlin, Java प्रोग्रामिंग लैंग्वेज, और C++ लैंग्वेज का इस्तेमाल करके लिखे जा सकते हैं. Android SDK टूल का कंपाइलेशन किसी APK या Android ऐप्लिकेशन बंडल में जोड़े जा सकते हैं.

Android पैकेज, जो .apk सफ़िक्स वाली एक संग्रह फ़ाइल होती है. इसमें यह शामिल होता है रनटाइम के समय किसी Android ऐप्लिकेशन का कॉन्टेंट ज़रूरी होता है. साथ ही, यह ऐसी फ़ाइल होती है जिसे Android पर चलाया जाता है जिन डिवाइसों पर ऐप्लिकेशन इंस्टॉल किया जाता है.

Android ऐप्लिकेशन बंडल, जो .aab सफ़िक्स वाली एक संग्रह फ़ाइल है. इसमें यह शामिल है किसी Android ऐप्लिकेशन प्रोजेक्ट का कॉन्टेंट. इसमें ऐसा अतिरिक्त मेटाडेटा भी शामिल है जिसकी ज़रूरत नहीं है रनटाइम. एएबी, पब्लिश करने का एक फ़ॉर्मैट है. इसे Android डिवाइसों पर इंस्टॉल नहीं किया जा सकता. यह APK जनरेट करने और बाद के चरण में साइन इन करने में मदद करता है.

Google के ज़रिए अपना ऐप्लिकेशन उपलब्ध कराते समय उदाहरण के लिए, Play के सर्वर, ऑप्टिमाइज़ किए गए ऐसे APK जनरेट करते हैं जिनमें सिर्फ़ संसाधन और जो ऐप्लिकेशन को इंस्टॉल करने का अनुरोध करने वाले डिवाइस के लिए ज़रूरी है.

हर Android ऐप्लिकेशन अपने सिक्योरिटी सैंडबॉक्स में होता है. यह सभी ये Android सुरक्षा सुविधाएं:

  • Android ऑपरेटिंग सिस्टम एक बहु-उपयोगकर्ता Linux सिस्टम है, जिसमें हर ऐप्लिकेशन कोई अन्य उपयोगकर्ता.
  • डिफ़ॉल्ट रूप से, सिस्टम हर ऐप्लिकेशन को एक यूनीक Linux उपयोगकर्ता आईडी असाइन करता है, जिसका इस्तेमाल सिर्फ़ होता है और ऐप्लिकेशन के पास इसकी जानकारी नहीं है. सिस्टम सभी फ़ाइलों के लिए अनुमतियां सेट करता है ताकि उस ऐप्लिकेशन को असाइन किया गया यूज़र आईडी ही उन्हें ऐक्सेस कर सके.
  • हर प्रोसेस में अपनी वर्चुअल मशीन (वीएम) होती है, इसलिए किसी ऐप्लिकेशन का कोड अन्य ऐप्लिकेशन.
  • डिफ़ॉल्ट रूप से, हर ऐप्लिकेशन अपनी Linux प्रोसेस में चलता है. Android सिस्टम शुरू हो जाता है प्रक्रिया को के कॉम्पोनेंट को एक्ज़ीक्यूट करना होता है. इसके बाद, प्रोसेस बंद हो जाती है जब यह अब नहीं है ज़रूरत होती है या जब सिस्टम को अन्य ऐप्लिकेशन के लिए मेमोरी रिकवर करनी होती है.

Android सिस्टम कम से कम अधिकारों का सिद्धांत लागू करता है. इसका मतलब है कि डिफ़ॉल्ट रूप से, हर ऐप्लिकेशन के पास सिर्फ़ उन कॉम्पोनेंट का ऐक्सेस होता है जिनकी ज़रूरत उसे अपना काम करने के लिए होती है अब नहीं. इससे एक बहुत ही सुरक्षित माहौल बन जाता है, जिसमें ऐप्लिकेशन जिसे ऐसा करने की अनुमति नहीं है.

हालांकि, ऐप्लिकेशन के पास डेटा शेयर करने के कई तरीके हैं डेटा को दूसरे ऐप्लिकेशन के साथ शेयर करते हैं और सिस्टम की सेवाएं ऐक्सेस करने के लिए ऐप्लिकेशन:

  • एक ही Linux यूज़र आईडी शेयर करने के लिए, दो ऐप्लिकेशन व्यवस्थित किए जा सकते हैं. दोनों ऐप्लिकेशन के लिए एक ही Linux यूज़र आईडी शेयर किया जा सकता है. वे एक-दूसरे की फ़ाइलें ऐक्सेस कर सकें. सिस्टम के संसाधनों को बचाने के लिए, एक यूज़र आईडी को भी एक ही Linux प्रोसेस में चलाने और उसी वीएम को शेयर करने का विकल्प चुना जा सकता है. कॉन्टेंट बनाने ऐप्लिकेशन पर भी इसी सर्टिफ़िकेट से साइन किया जाना चाहिए.
  • ऐप्लिकेशन, डिवाइस का डेटा ऐक्सेस करने का अनुरोध कर सकता है, जैसे कि डिवाइस का जगह की जानकारी, कैमरा, और ब्लूटूथ कनेक्शन. उपयोगकर्ता के पास यह है इन अनुमतियों को साफ़ तौर पर मंज़ूरी देनी होगी. अनुमतियों के बारे में ज़्यादा जानकारी के लिए, यहां देखें Android पर अनुमतियां.

इस दस्तावेज़ के बाकी हिस्से में इन सिद्धांतों के बारे में बताया गया है:

  • आपके ऐप्लिकेशन को तय करने वाले मुख्य फ़्रेमवर्क कॉम्पोनेंट.
  • वह मेनिफ़ेस्ट फ़ाइल जिसमें कॉम्पोनेंट और ज़रूरी डिवाइस के बारे में जानकारी दी जाती है आपके लिए सुविधाएं है.
  • ऐसे संसाधन जो ऐप्लिकेशन के कोड से अलग होते हैं और आपके ऐप्लिकेशन को विविध प्रकार के डिवाइस कॉन्फ़िगरेशन के लिए इसके व्यवहार को ऑप्टिमाइज़ कर सकता है.

ऐप्लिकेशन के कॉम्पोनेंट

ऐप्लिकेशन के कॉम्पोनेंट, किसी Android ऐप्लिकेशन को बनाने के लिए ज़रूरी एलिमेंट होते हैं. हर कॉम्पोनेंट एक ऐसा एंट्री पॉइंट है जिससे सिस्टम या उपयोगकर्ता आपके ऐप्लिकेशन में जा सकते हैं. कुछ सूचनाएं मिल रही हैं कॉम्पोनेंट, कुछ अन्य कॉम्पोनेंट पर निर्भर करते हैं.

ऐप्लिकेशन कॉम्पोनेंट चार तरह के होते हैं:

  • गतिविधियां
  • सेवाएं
  • ब्रॉडकास्ट रिसीवर
  • कॉन्टेंट देने वाले ऐप्लिकेशन

हर टाइप का अलग मकसद होता है और इसका एक अलग लाइफ़साइकल है, जो यह तय करता है कि कॉम्पोनेंट कैसे बनाया और खत्म किया जाता है. नीचे दिए सेक्शन में, चार तरह के ऐप्लिकेशन कॉम्पोनेंट के बारे में बताया गया है.

गतिविधियां
गतिविधि, उपयोगकर्ता से इंटरैक्ट करने का एंट्री पॉइंट है. यह यूज़र इंटरफ़ेस वाली स्क्रीन है. उदाहरण के लिए, किसी ईमेल ऐप्लिकेशन में एक गतिविधि हो सकती है, जिसमें नए ईमेल, ईमेल लिखने के लिए अन्य गतिविधि, और ईमेल पढ़ने के लिए अन्य गतिविधि. हालांकि ये गतिविधियां एक साथ काम करती हैं, ताकि ईमेल ऐप्लिकेशन में सभी को एक जैसा उपयोगकर्ता अनुभव दिया जा सके दूसरों से अलग हो.

कोई दूसरा ऐप्लिकेशन इनमें से किसी भी एक को शुरू कर सकता है गतिविधियों का इतिहास सेव करने की अनुमति दें. उदाहरण के लिए, कोई कैमरा ऐप्लिकेशन ईमेल ऐप्लिकेशन में, नया ईमेल लिखने के लिए उपयोगकर्ता गतिविधि.

कोई गतिविधि, सिस्टम और ऐप्लिकेशन के बीच नीचे दिए गए मुख्य इंटरैक्शन की सुविधा देती है:

  • उपयोगकर्ता वर्तमान में किन चीज़ों पर ध्यान देता है—स्क्रीन पर क्या है—इस पर नज़र रखें, ताकि सिस्टम, गतिविधि को होस्ट करने वाली प्रोसेस को जारी रखता है.
  • यह जानना कि पहले इस्तेमाल की गई किन प्रोसेस में ऐसी गतिविधियां रुकी हुई हैं जिन्हें उपयोगकर्ता वापस कर सकता है और उन्हें उपलब्ध बनाए रखने के लिए उन प्रोसेस को प्राथमिकता दें.
  • ऐप्लिकेशन की प्रोसेस को बंद करने में उसकी मदद करना, ताकि उपयोगकर्ता गतिविधि पर वापस जा सके पहले जैसी स्थिति में वापस लाया जाएगा.
  • ऐप्लिकेशन को एक-दूसरे के बीच यूज़र फ़्लो लागू करने का तरीका उपलब्ध कराना और सिस्टम को इन फ़्लो को ठीक तरह से व्यवस्थित कर सकें. इसका मुख्य उदाहरण, कॉन्टेंट शेयर करना है.

आप किसी गतिविधि को Activity क्लास की सब-क्लास के तौर पर लागू करते हैं. ज़्यादा के लिए Activity क्लास के बारे में जानकारी, देखें गतिविधियों के बारे में जानकारी.

सेवाएं
सेवा एक ऐसा एंट्री पॉइंट है जिसकी मदद से, ऐप्लिकेशन को बैकग्राउंड में चालू रखा जा सकता है कई वजहों से ऐसा किया जा सकता है. यह एक ऐसा कॉम्पोनेंट है जो लंबे समय तक काम करने के लिए, बैकग्राउंड में काम करता है रिमोट प्रोसेस के लिए ऑपरेशन करना या काम करना. इस सेवा के लिए यूज़र इंटरफ़ेस उपलब्ध नहीं है.

इसके लिए उदाहरण के लिए, जब उपयोगकर्ता किसी दूसरे ऐप्लिकेशन का इस्तेमाल कर रहा हो, तब कोई सेवा बैकग्राउंड में संगीत चला सकती है या यह किसी गतिविधि से उपयोगकर्ता इंटरैक्शन को ब्लॉक किए बिना नेटवर्क पर डेटा फ़ेच कर सकता है. अन्य कोई कॉम्पोनेंट, जैसे कि कोई गतिविधि, सेवा को चालू कर सकती है और उसे चलाने या उससे बाइंड करने के लिए चालू कर सकती है उससे इंटरैक्ट करें.

यहां दो तरह की सेवाएं दी गई हैं, जो सिस्टम को किसी ऐप्लिकेशन को मैनेज करने का तरीका बताती हैं: चालू की गई सेवाएं और सीमित सेवाओं के लिए.

शुरू की गई सेवाएं, सिस्टम को उनका काम पूरा होने तक उन्हें चालू रखने के लिए कहती हैं. ऐसा हो सकता है कि बैकग्राउंड में कुछ डेटा सिंक करना पड़े या उपयोगकर्ता के ऐप्लिकेशन छोड़ने के बाद भी संगीत चलाना पड़े. बैकग्राउंड में डेटा सिंक करने या संगीत चलाने से, यह पता चलता है कि बैकग्राउंड में डेटा कैसे सिंक किया जाता है सेवाएं, जिन्हें सिस्टम अलग तरह से मैनेज करता है:

  • संगीत चलाना ऐसी चीज़ है जिसके बारे में उपयोगकर्ता को सीधे तौर पर जानकारी होती है और ऐप्लिकेशन, लोगों को यह जानकारी देता है जिसमें सिस्टम यह बताता है कि वह फ़ोरग्राउंड में होना चाहता है. साथ ही, उसे सूचना की मदद से सूचना देनी होती है किस उपयोगकर्ता को यह चलता है. इस स्थिति में, सिस्टम प्राथमिकता प्रोसेस नहीं होती, क्योंकि इसके हट जाने पर उपयोगकर्ता को खराब अनुभव मिलता है.
  • बैकग्राउंड में चलने वाली सामान्य सेवा, उपयोगकर्ता को सीधे तौर पर नहीं पता होती. इसलिए, सिस्टम को अपनी प्रक्रिया को मैनेज करने में ज़्यादा आज़ादी है. यह उसे मार सकता है, कुछ समय बाद, अगर सेवा को ज़्यादा स्टोरेज की ज़रूरत हो, तो उसे रीस्टार्ट करें उपयोगकर्ता को तुरंत चिंता हो.

बाउंड सेवाएं चलती हैं, क्योंकि कुछ अन्य ऐप्लिकेशन (या सिस्टम) ने कहा है कि वह सेवा. सीमित सेवा, किसी दूसरी प्रोसेस के लिए एपीआई उपलब्ध कराती है और सिस्टम को पता है कि इन प्रोसेस पर निर्भर करता है. इसलिए, अगर प्रक्रिया A प्रोसेस B मौजूद है, तो सिस्टम जानता है कि उसे प्रोसेस B और उसकी सेवा को A के लिए चलाना जारी रखना होगा. इसके अलावा, अगर उपयोगकर्ता को प्रोसेस A की परवाह है, तो वह प्रोसेस B को एक ऐसी चीज़ मानता है उपयोगकर्ता भी उसका ख्याल रखता है.

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

किसी सेवा को Service की सब-क्लास के तौर पर लागू किया जाता है. Reader Revenue Manager को सेट अप करने के बारे में Service कक्षा के बारे में जानने के लिए, सेवाओं के बारे में खास जानकारी.

ध्यान दें: अगर आपका ऐप्लिकेशन Android 5.0 (एपीआई लेवल 21) या इसके बाद वाले वर्शन को टारगेट करता है, कार्रवाइयां शेड्यूल करने के लिए, JobScheduler क्लास का इस्तेमाल करें. JobScheduler के पास बिजली की खपत को कम करने के लिए, बेहतर तरीके से काम शेड्यूल करके बैटरी बचाने का फ़ायदा पाएं और Doze API के साथ काम करके ऐसा किया जा सकता है. इस क्लास का इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, JobScheduler देखें देखें.

ब्रॉडकास्ट रिसीवर
ब्रॉडकास्ट रिसीवर एक ऐसा कॉम्पोनेंट है जिसकी मदद से, सिस्टम ऐप्लिकेशन, नियमित यूज़र फ़्लो के दायरे से बाहर है, ताकि ऐप्लिकेशन पूरे सिस्टम पर होने वाले ब्रॉडकास्ट का जवाब दे सके घोषणाएं. ब्रॉडकास्ट रिसीवर, ऐप्लिकेशन में अच्छी तरह से बताई गई एक और एंट्री होती है. इसलिए, सिस्टम उन ऐप्लिकेशन पर भी ब्रॉडकास्ट डिलीवर कर सकता है जो अभी नहीं चल रहे हैं.

उदाहरण के लिए, कोई ऐप्लिकेशन ऐसा कर सकता है उपयोगकर्ता को आने वाले इवेंट के बारे में बताने के लिए, अलार्म शेड्यूल करें. ऐप्लिकेशन में अलार्म को BroadcastReceiver पर डिलीवर किया गया है, इसलिए ऐप्लिकेशन को ये काम करने की ज़रूरत नहीं है तब तक चालू रहती है, जब तक अलार्म बंद नहीं हो जाता.

कई ब्रॉडकास्ट, सिस्टम से शुरू होते हैं. जैसे, स्क्रीन बंद होने की सूचना देने वाला ब्रॉडकास्ट, बैटरी कम है या तस्वीर ले ली गई है. ऐप्लिकेशन, ब्रॉडकास्ट शुरू कर सकते हैं. जैसे, अन्य ऐप्लिकेशन को यह बताने के लिए कि कुछ डेटा डिवाइस पर डाउनलोड हो जाता है और उनके इस्तेमाल के लिए उपलब्ध रहता है.

हालांकि ब्रॉडकास्ट किया जा रहा है रिसीवर कोई यूज़र इंटरफ़ेस नहीं दिखाते हैं, वे स्टेटस बार सूचना बना सकते हैं का इस्तेमाल करें, ताकि कोई ब्रॉडकास्ट इवेंट होने पर उपयोगकर्ता को सूचना दी जा सके. हालांकि, आम तौर पर ब्रॉडकास्ट रिसीवर यह दूसरे कॉम्पोनेंट के लिए सिर्फ़ एक गेटवे है और इसे बहुत कम काम करने के लिए बनाया गया है.

उदाहरण के लिए, कोई ब्रॉडकास्ट रिसीवर कुछ काम के लिए JobService शेड्यूल कर सकता है JobScheduler का इस्तेमाल करके, किसी इवेंट में बदलाव किया जा सकता है. ब्रॉडकास्ट रिसीवर में अक्सर ऐसे ऐप्लिकेशन शामिल होते हैं जो आपस में इंटरैक्ट करते हैं. इसलिए, यह जानना ज़रूरी है कि सुरक्षा से जुड़ी समस्याएं भी हो सकती हैं.

ब्रॉडकास्ट रिसीवर को BroadcastReceiver की सब-क्लास के तौर पर लागू किया जाता है, और हर ब्रॉडकास्ट को Intent ऑब्जेक्ट के तौर पर डिलीवर किया जाता है. ज़्यादा जानकारी के लिए, BroadcastReceiver क्लास देखें.

कॉन्टेंट देने वाले लोग या कंपनियां
कॉन्टेंट देने वाला, ऐप्लिकेशन डेटा के उस शेयर किए गए सेट को मैनेज करता है जिसमें आप डेटा सेव कर सकते हैं फ़ाइल सिस्टम, SQLite डेटाबेस में, वेब पर या किसी अन्य स्थायी स्टोरेज में जगह की जानकारी ऐप ऐक्सेस कर सकता है. कॉन्टेंट देने वाले के ज़रिए, अन्य ऐप्लिकेशन क्वेरी कर सकते हैं या कॉन्टेंट में बदलाव कर सकते हैं , अगर कॉन्टेंट देने वाले ने अनुमति दी हो.

उदाहरण के लिए, Android सिस्टम एक सेवा देने वाली कंपनी है, जो उपयोगकर्ता की संपर्क जानकारी को मैनेज करती है. ऐसा कोई भी ऐप्लिकेशन जिसमें अनुमतियां, कॉन्टेंट देने वाले से क्वेरी कर सकती हैं, जैसे कि ContactsContract.Data, इनके बारे में जानकारी पढ़ने और लिखने के लिए किसी व्यक्ति के बारे में बात करते हैं.

कॉन्टेंट देने वाले को डेटाबेस की एक अलग जानकारी समझना दिलचस्प लगता है, क्योंकि एपीआई और सपोर्ट की ज़रूरत नहीं पड़ती. हालांकि, उनके पास अलग-अलग के मुख्य मकसद को पूरा करना है.

सिस्टम के लिए, कॉन्टेंट देने वाला कोई ऐप्लिकेशन, नाम वाले डेटा आइटम पब्लिश करने के लिए एक एंट्री पॉइंट होता है. यूआरआई स्कीम से पहचाना जाता है. इससे, ऐप्लिकेशन यह तय कर सकता है कि वह मौजूदा डेटा को कैसे मैप करना चाहता है यूआरआई नेमस्पेस, अन्य इकाइयों को दी जाती है, जो डेटा शामिल है. कुछ ऐसे खास काम हैं, जिनकी मदद से सिस्टम किसी ऐप्लिकेशन को मैनेज कर पाता है:

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

कॉन्टेंट देने वाली कंपनियां, ऐसे डेटा को पढ़ने और लिखने में भी मदद करती हैं जो आपके डेटा के लिए निजी है है और इसे शेयर नहीं किया गया है.

कॉन्टेंट देने वाले को ContentProvider की सब-क्लास के तौर पर लागू किया जाता है साथ ही, एपीआई का एक ऐसा स्टैंडर्ड सेट लागू करना होगा जिससे दूसरे ऐप्लिकेशन परफ़ॉर्म कर सकें लेन-देन. ज़्यादा जानकारी के लिए, कॉन्टेंट देने वाले डेवलपर के बारे में जानें पढ़ें.

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

जब सिस्टम किसी कॉम्पोनेंट को शुरू करता है, तो वह उस ऐप्लिकेशन के लिए प्रोसेस शुरू करता है. हालांकि, ऐसा सिर्फ़ तब होता है, जब सिस्टम एक कॉम्पोनेंट को शुरू नहीं करता है पहले से चल रहा है और कॉम्पोनेंट के लिए ज़रूरी क्लास को इंस्टैंशिएट करता है. उदाहरण के लिए, अगर आपके ऐप्लिकेशन, कैमरा ऐप्लिकेशन में वह गतिविधि शुरू करता है जो फ़ोटो या वीडियो को कैप्चर करती है कैमरा ऐप्लिकेशन से जुड़ी प्रोसेस में चलता है, न कि आपके ऐप्लिकेशन की प्रोसेस से. इसलिए, ज़्यादातर अन्य सिस्टम पर मौजूद ऐप्लिकेशन के उलट, Android ऐप्लिकेशन में सिर्फ़ एक एंट्री नहीं होती पॉइंट: यहां कोई main() फ़ंक्शन नहीं है.

क्योंकि सिस्टम हर ऐप्लिकेशन को एक अलग प्रोसेस में, फ़ाइल से जुड़ी अनुमतियों की मदद से चलाता है दूसरे ऐप्लिकेशन के ऐक्सेस पर पाबंदी लगाते हैं, तो आपका ऐप्लिकेशन सीधे तौर पर इस कॉम्पोनेंट को चालू नहीं कर सकता कोई दूसरा ऐप्लिकेशन. हालांकि, Android सिस्टम यह कर सकता है. कॉम्पोनेंट को चालू करने के लिए किसी दूसरे ऐप्लिकेशन में, आपकी साइट पर मैसेज भेजने के बाद सिस्टम को मैसेज भेजा जाता है. इससे सिस्टम को आपका मकसद पता चलता है कोई खास कॉम्पोनेंट शुरू करते हैं. इसके बाद, सिस्टम आपके लिए कॉम्पोनेंट को चालू कर देता है.

कॉम्पोनेंट चालू करना

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

Intent ऑब्जेक्ट से एक इंटेंट बनाया जाता है, जो किसी खास कॉम्पोनेंट (अश्लील इंटेंट) या किसी खास तरह का कॉम्पोनेंट चालू करने के लिए (इंप्लिसिट इंटेंट).

गतिविधियों और सेवाओं के लिए, एक इंटेंट कार्रवाई के बारे में बताता है, जैसे कि view या send कुछ और कर सकता है. साथ ही, कार्रवाई करने के लिए डेटा के यूआरआई को तय कर सकता है, कॉम्पोनेंट को समझने की ज़रूरत है.

उदाहरण के लिए, कोई इंटेंट इमेज दिखाने या वेब पेज खोलने की गतिविधि. कुछ मामलों में, कोई नतीजा पाने के लिए गतिविधि. इस स्थिति में गतिविधि भी वापस आती है Intent में नतीजा मिला. आपके पास यह अनुमति देने के लिए कि उपयोगकर्ता कोई निजी संपर्क चुनता है और उसे आपको वापस देता है. रिटर्न इंटेंट में शामिल है चुने गए संपर्क की ओर इशारा करने वाला यूआरआई.

ब्रॉडकास्ट रिसीवर के लिए, इंटेंट ब्रॉडकास्ट होने वाली सूचना. उदाहरण के लिए, डिवाइस की बैटरी कम होने के बारे में बताने वाला ब्रॉडकास्ट इसमें सिर्फ़ एक ऐसी कार्रवाई स्ट्रिंग शामिल होती है जिसके बारे में जानकारी है. इससे पता चलता है कि बैटरी कम है.

गतिविधियों, सेवाओं, और ब्रॉडकास्ट रिसीवर के उलट, कॉन्टेंट देने वाले लोग ContentResolver से मिले अनुरोध के आधार पर टारगेट करने पर चालू होती है. कॉन्टेंट रिज़ॉल्वर, कॉन्टेंट देने वाले के साथ सीधे तौर पर किए जाने वाले सभी लेन-देन को हैंडल करता है और कॉम्पोनेंट सेवा देने वाली कंपनी के कॉल करने के तरीकों के साथ लेन-देन करने पर, ContentResolver ऑब्जेक्ट. इससे सुरक्षा से जुड़ी वजहों से, एक-दूसरे के बारे में पता नहीं चलता है. कॉन्टेंट देने वाले और जानकारी का अनुरोध करने वाले कॉम्पोनेंट के लिए उपलब्ध है.

हर तरह के कॉम्पोनेंट को चालू करने के अलग-अलग तरीके हैं:

  • कोई भी गतिविधि शुरू की जा सकती है या उसे कुछ नया करने के लिए दिया जा सकता है startActivity() के लिए Intent पास किया जा रहा है इसके अलावा, गतिविधि का कोई नतीजा पाने के लिए, startActivityForResult().
  • Android 5.0 (एपीआई लेवल 21) और इसके बाद वाले वर्शन पर, कार्रवाइयां शेड्यूल करने के लिए, JobScheduler क्लास. Android के पुराने वर्शन के लिए, इस मोड को शुरू किया जा सकता है या किसी मौजूदा सेवा को नए निर्देश देने के लिए startService() के लिए Intent पास करना. इस सेवा से जुड़ने के लिए, Intent को पास करें bindService().
  • ब्रॉडकास्ट शुरू करने के लिए, ये तरीके इस्तेमाल किए जा सकते हैं: Intent sendBroadcast() या sendOrderedBroadcast().
  • आप कॉल करके किसी सामग्री कंपनी से क्वेरी कर सकते हैं query() अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है ContentResolver पर.

इंटेंट के इस्तेमाल के बारे में ज़्यादा जानने के लिए, इंटेंट और इंटेंट फ़िल्टर दस्तावेज़. यहां दिए गए दस्तावेज़ों में, खास कॉम्पोनेंट को चालू करने के बारे में ज़्यादा जानकारी दी गई है: गतिविधियों के बारे में जानकारी, सेवाओं के बारे में खास जानकारी, BroadcastReceiver, और कॉन्टेंट देने वाली कंपनियां.

मेनिफ़ेस्ट फ़ाइल

Android सिस्टम किसी ऐप्लिकेशन कॉम्पोनेंट को शुरू कर सके, इसके लिए सिस्टम को यह पता होना चाहिए कि घटक ऐप्लिकेशन की मेनिफ़ेस्ट फ़ाइल, AndroidManifest.xml को पढ़कर मौजूद होता है. आपका ऐप्लिकेशन इस फ़ाइल में, अपने सभी कॉम्पोनेंट के बारे में बताता है, जो ऐप प्रोजेक्ट डायरेक्ट्री में मिलेगा.

मेनिफ़ेस्ट, ऐप्लिकेशन के कॉम्पोनेंट, दोनों के बारे में जानकारी देने के अलावा कई अन्य काम भी करता है जैसे:

  • ऐप्लिकेशन के लिए उपयोगकर्ता की ज़रूरी अनुमतियों की पहचान करता है. जैसे, इंटरनेट ऐक्सेस करने के लिए या उपयोगकर्ता के संपर्कों को पढ़ने का ऐक्सेस.
  • तय करता है कि कम से कम एपीआई लेवल ऐप्लिकेशन के लिए ज़रूरी है, जो इस बात पर निर्भर करता है कि ऐप्लिकेशन कौनसे एपीआई इस्तेमाल करता है.
  • ऐप्लिकेशन के लिए इस्तेमाल किए गए या उसके लिए ज़रूरी हार्डवेयर और सॉफ़्टवेयर सुविधाओं की जानकारी देता है, जैसे कि कैमरा, ब्लूटूथ सेवाएं या मल्टीटच स्क्रीन.
  • यह नीति, एपीआई लाइब्रेरी को तय करती है कि ऐप्लिकेशन को Android फ़्रेमवर्क के अलावा किसी अन्य मकसद से लिंक करने की ज़रूरत है API), जैसे कि Google Maps लाइब्रेरी.

कॉम्पोनेंट के बारे में बताना

मेनिफ़ेस्ट का मुख्य काम सिस्टम को ऐप्लिकेशन के कॉम्पोनेंट के बारे में जानकारी देना है. इसके लिए उदाहरण के लिए, मेनिफ़ेस्ट फ़ाइल इस तरह से किसी गतिविधि का एलान कर सकती है:

<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
    <application android:icon="@drawable/app_icon.png" ... >
        <activity android:name="com.example.project.ExampleActivity"
                  android:label="@string/example_label" ... >
        </activity>
        ...
    </application>
</manifest>

<application> में एलिमेंट के साथ, android:icon एट्रिब्यूट है.

<activity> एलिमेंट में, android:name एट्रिब्यूट, Activity सब-क्लास और android:label एट्रिब्यूट की वैल्यू में स्ट्रिंग दी गई है का इस्तेमाल उस गतिविधि के लिए किया जा सकता है जो उपयोगकर्ता को दिखने वाले लेबल के तौर पर दिखता है.

आपको इन एलिमेंट का इस्तेमाल करके, ऐप्लिकेशन के सभी कॉम्पोनेंट के बारे में बताना होगा:

  • <activity> एलिमेंट गतिविधियों के लिए
  • इसके लिए <service> एलिमेंट सेवाएं
  • <receiver> एलिमेंट ब्रॉडकास्ट रिसीवर के लिए
  • <provider> एलिमेंट कॉन्टेंट देने वालों के लिए

ऐसी गतिविधियां, सेवाएं, और कॉन्टेंट देने वाले संगठन जिन्हें आपने अपने सोर्स में शामिल किया है, लेकिन उनके बारे में जानकारी नहीं दी है सिस्टम को नहीं दिखता और इस वजह से वह कभी नहीं चल सकता. हालांकि, ब्रॉडकास्ट रिसीवर का एलान मेनिफ़ेस्ट में किया जा सकता है या कोड में डाइनैमिक तौर पर BroadcastReceiver अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है ऑब्जेक्ट हैं और कॉल करके सिस्टम के साथ रजिस्टर हैं registerReceiver().

अपने ऐप्लिकेशन के लिए मेनिफ़ेस्ट फ़ाइल को व्यवस्थित करने के तरीके के बारे में ज़्यादा जानने के लिए, ऐप्लिकेशन मेनिफ़ेस्ट की खास जानकारी देखें.

कॉम्पोनेंट की क्षमताओं के बारे में बताना

जैसा कि कॉम्पोनेंट चालू करना सेक्शन में बताया गया है, गतिविधियां, सेवाएं, और ब्रॉडकास्ट रिसीवर शुरू करने के लिए Intent. आपने यह कर लिया इंटेंट में कॉम्पोनेंट क्लास के नाम का इस्तेमाल करके, टारगेट कॉम्पोनेंट को साफ़ तौर पर नाम दें. इंप्लिसिट इंटेंट का इस्तेमाल भी किया जा सकता है, जो यह बताती है कि कार्रवाई किस तरह की है और आपको किस तरह की कार्रवाई करनी है इस पर कार्रवाई करें. इंप्लिसिट इंटेंट की मदद से, सिस्टम डिवाइस पर कॉम्पोनेंट ढूंढ सकता है जो यह काम कर सकते हैं: कार्रवाई और उसे शुरू करें. अगर ऐसे कई कॉम्पोनेंट हैं जो इंटेंट, उपयोगकर्ता चुनता है कि किसका इस्तेमाल करना है.

चेतावनी: अगर आपने Service, पक्का करें कि आपका ऐप्लिकेशन सुरक्षित है. इसके लिए, अश्लील इंटेंट. किसी सेवा को शुरू करने के लिए इंप्लिसिट इंटेंट का इस्तेमाल करना सुरक्षा को खतरा है, क्योंकि आपको पता नहीं है कि कौनसी सेवा आपके मकसद के मुताबिक काम करेगी और उपयोगकर्ता यह नहीं देख सकता कि कौन-सी सेवा शुरू होती है. Android 5.0 (एपीआई लेवल 21) और इसके बाद के वर्शन में, सिस्टम bindService() को कॉल करने पर अपवाद दिखता है इंप्लिसिट इंटेंट से. अपनी सेवाओं के लिए इंटेंट फ़िल्टर का एलान न करें.

सिस्टम उन कॉम्पोनेंट की पहचान करता है जो किसी इंटेंट में जवाब दे सकते हैं. इसके लिए, नए ऐप्लिकेशन की मेनिफ़ेस्ट फ़ाइल में दिए गए इंटेंट फ़िल्टर के लिए मिले इंटेंट डिवाइस.

अपने ऐप्लिकेशन के मेनिफ़ेस्ट में किसी गतिविधि का एलान करते समय, आपके पास विकल्प के तौर पर यह जानकारी शामिल करने का विकल्प होता है इंटेंट फ़िल्टर, जो गतिविधि की क्षमताओं के बारे में बताते हैं, ताकि यह इंटेंट के हिसाब से जवाब दे सके दूसरे ऐप्लिकेशन से आता है. आप यह करके ऐसा करते हैं कॉम्पोनेंट के एलान वाले एलिमेंट के चाइल्ड के तौर पर <intent-filter> एलिमेंट जोड़ना.

उदाहरण के लिए, अगर आपने नया ईमेल लिखने की गतिविधि वाला ईमेल ऐप्लिकेशन बनाया है, तो "भेजें" का जवाब देने के लिए इंटेंट फ़िल्टर का एलान करें नया ईमेल भेजने का इरादा रखता है, जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है:

<manifest ... >
    ...
    <application ... >
        <activity android:name="com.example.project.ComposeEmailActivity">
            <intent-filter>
                <action android:name="android.intent.action.SEND" />
                <data android:type="*/*" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
    </application>
</manifest>

अगर कोई दूसरा ऐप्लिकेशन, ACTION_SEND कार्रवाई से कोई इंटेंट बनाता है और उसे पास करता है startActivity(), सिस्टम आपकी गतिविधि शुरू कर सकता है, ताकि उपयोगकर्ता ड्राफ़्ट के तौर पर ईमेल.

इंटेंट फ़िल्टर बनाने के बारे में ज़्यादा जानने के लिए, इंटेंट और इंटेंट फ़िल्टर दस्तावेज़ देखें.

ऐप्लिकेशन से जुड़ी ज़रूरी शर्तों के बारे में बताएं

Android डिवाइस कई तरह से काम करते हैं और सभी डिवाइसों में सुविधाएं और सुविधाएं मिलती हों. अपने ऐप्लिकेशन को डिवाइसों पर इंस्टॉल होने से रोकने के लिए जिनमें आपके ऐप्लिकेशन के लिए ज़रूरी सुविधाएं नहीं हैं, तो यह ज़रूरी है कि आप आपका ऐप्लिकेशन किस तरह के डिवाइसों पर काम करता है, इसके लिए आपको अपने डिवाइस और सॉफ़्टवेयर की ज़रूरी शर्तों के बारे में बताना होगा मेनिफ़ेस्ट फ़ाइल में सेव किया जाएगा.

इनमें से ज़्यादातर एलान, सिर्फ़ जानकारी देने के लिए हैं. सिस्टम, सिस्टम को पढ़ा नहीं जा रहा लेकिन Google Play जैसी बाहरी सेवाएं उन्हें फ़िल्टर करने की सुविधा देने के लिए पढ़ती हैं जब वे अपने डिवाइस से ऐप्लिकेशन खोजते हैं, तब उपयोगकर्ताओं को आपके विज्ञापन दिखाए जाते हैं.

उदाहरण के लिए, मान लें कि आपके ऐप्लिकेशन के लिए कैमरे की ज़रूरत होती है और वह Android 8.0 (एपीआई लेवल 26) में पेश किए गए एपीआई का इस्तेमाल करता है. आपको इन ज़रूरी शर्तों का एलान करना होगा. minSdkVersion और targetSdkVersion की वैल्यू इसमें सेट की गई हैं आपके ऐप्लिकेशन मॉड्यूल की build.gradle फ़ाइल:

android {
  ...
  defaultConfig {
    ...
    minSdkVersion 26
    targetSdkVersion 29
  }
}

ध्यान दें: minSdkVersion और इस तारीख से, सीधे मेनिफ़ेस्ट फ़ाइल में targetSdkVersion बिल्ड प्रोसेस के दौरान उन्हें Gradle से ओवरराइट कर दिया जाता है. ज़्यादा जानकारी के लिए, यह देखें एपीआई लेवल से जुड़ी ज़रूरी शर्तें तय करें.

ऐप्लिकेशन की मेनिफ़ेस्ट फ़ाइल में, कैमरे की सुविधा के बारे में जानकारी दी जाती है:

<manifest ... >
    <uses-feature android:name="android.hardware.camera.any"
                  android:required="true" />
    ...
</manifest>

इन उदाहरणों में दी गई जानकारी के मुताबिक, जिन डिवाइसों मेंनहीं है कैमरा या Android 8.0 से पहले के वर्शन में, आपके ऐप्लिकेशन को Google Play से इंस्टॉल नहीं किया जा सकता. हालांकि, यह एलान भी किया जा सकता है कि आपका ऐप्लिकेशन कैमरे का इस्तेमाल करता है. हालांकि, वह इनका इस्तेमाल नहीं करता ज़रूरी है. ऐसा करने के लिए, आप required को सेट करें एट्रिब्यूट की वैल्यू false से जोड़ी है, तो रनटाइम के दौरान इसकी जांच करनी थी कि क्या डिवाइस में कैमरा हो और ज़रूरत पड़ने पर कैमरे की किसी भी सुविधा को बंद कर दिया जाए.

अलग-अलग डिवाइसों पर अपने ऐप्लिकेशन की सुविधाओं को कैसे मैनेज किया जा सकता है, इस बारे में ज़्यादा जानकारी डिवाइस के साथ काम करने से जुड़ी खास जानकारी में दी गई है.

ऐप्लिकेशन के रिसॉर्स

Android ऐप्लिकेशन में सिर्फ़ कोड नहीं होते और कई दूसरी चीज़ों का भी इस्तेमाल किया जाता है. इसके लिए ऐसे संसाधनों की ज़रूरत होती है जो ये सोर्स कोड से अलग हो सकते हैं, जैसे कि इमेज, ऑडियो फ़ाइलें, और विज़ुअल से जुड़ी ऐसी कोई भी चीज़ प्रज़ेंटेशन दिखेगा. उदाहरण के लिए, आप ऐनिमेशन, मेन्यू, स्टाइल, कलर, गतिविधि के यूज़र इंटरफ़ेस का लेआउट एक्सएमएल फ़ाइलों के साथ होता है.

ऐप्लिकेशन के संसाधनों का इस्तेमाल करने से, कोड में बदलाव किए बिना अपने ऐप्लिकेशन की अलग-अलग विशेषताओं को अपडेट करने के लिए. उपलब्ध कराया जा रहा है अन्य संसाधनों के सेट से, आपको कई तरह के संसाधनों के लिए अपने ऐप्लिकेशन को ऑप्टिमाइज़ करने में मदद मिलती है डिवाइस कॉन्फ़िगरेशन, जैसे कि अलग-अलग भाषाएं और स्क्रीन साइज़.

आपके Android प्रोजेक्ट में शामिल किए गए हर संसाधन के लिए, SDK टूल के बिल्ड टूल पूर्णांक आईडी, जिसका इस्तेमाल अपने ऐप्लिकेशन कोड से या एक्सएमएल में बताए गए अन्य रिसॉर्स के लिए. उदाहरण के लिए, अगर आपके ऐप्लिकेशन में logo.png (res/drawable/ डायरेक्ट्री में सेव किया गया), SDK टूल के टूल जनरेट करते हैं R.drawable.logo नाम का एक संसाधन आईडी. यह आईडी, ऐप्लिकेशन के खास पूर्णांक पर मैप होता है, जो इमेज का रेफ़रंस देने और उसे अपने यूज़र इंटरफ़ेस में शामिल करने के लिए, इसका इस्तेमाल किया जा सकता है.

अपने सोर्स कोड से अलग, संसाधन उपलब्ध कराने के सबसे अहम पहलुओं में से एक यह है अलग-अलग डिवाइस के लिए वैकल्पिक संसाधन देने की क्षमता है कॉन्फ़िगरेशन.

उदाहरण के लिए, एक्सएमएल में यूज़र इंटरफ़ेस (यूआई) स्ट्रिंग तय करके, स्ट्रिंग को दूसरी भाषाओं को सेट कर सकते हैं और उन स्ट्रिंग को अलग-अलग फ़ाइलों में सेव कर सकते हैं. इसके बाद Android, सही भाषा स्ट्रिंग आपके यूज़र इंटरफ़ेस (यूआई) में, भाषा क्वालिफ़ायर के हिसाब से जिसे आप रिसॉर्स डायरेक्ट्री के नाम के साथ जोड़ते हैं, जैसे कि फ़्रेंच स्ट्रिंग के लिए res/values-fr/ और उपयोगकर्ता की भाषा सेटिंग शामिल है.

Android, आपके अन्य संसाधनों के लिए कई क्वालीफ़ायर का इस्तेमाल करता है. कॉन्टेंट बनाने क्वालीफ़ायर एक छोटी स्ट्रिंग होती है, जिसे अपनी रिसॉर्स डायरेक्ट्री के नाम में शामिल किया जाता है, ताकि वह डिवाइस कॉन्फ़िगरेशन तय करती है जिसके लिए उन संसाधनों का इस्तेमाल किया जाता है.

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

अपने आवेदन में शामिल किए जा सकने वाले अलग-अलग तरह के संसाधनों के बारे में ज़्यादा जानकारी पाने के लिए, अलग-अलग डिवाइस कॉन्फ़िगरेशन के लिए वैकल्पिक संसाधन बनाएं, ऐप्लिकेशन के संसाधनों की खास जानकारी पढ़ें. यहां की यात्रा पर हूं सबसे सही तरीकों के बारे में ज़्यादा जानें. साथ ही, दमदार और प्रोडक्शन की क्वालिटी वाले ऐप्लिकेशन डिज़ाइन करने, ऐप्लिकेशन के आर्किटेक्चर की गाइड देखें.

अन्य संसाधन

वीडियो और कोड ट्यूटोरियल की मदद से Android डेवलपमेंट के बारे में जानने के लिए, यहां जाएं Kotlin की मदद से Android ऐप्लिकेशन डेवलप करना उड्डसिटी कोर्स.

इसके बारे में पढ़ना जारी रखें:

इंटेंट और इंटेंट फ़िल्टर
इन कामों के लिए Intent API का इस्तेमाल करने का तरीका जानें ऐप्लिकेशन के कॉम्पोनेंट, जैसे कि गतिविधियां और सेवाएं, और अपने ऐप्लिकेशन के कॉम्पोनेंट बनाने का तरीका दूसरे ऐप्लिकेशन में इस्तेमाल करने के लिए उपलब्ध है.
गतिविधियों के बारे में जानकारी
Activity क्लास का इंस्टेंस बनाने का तरीका जानें, इसकी मदद से, आपके ऐप्लिकेशन में यूज़र इंटरफ़ेस को एक अलग स्क्रीन मिलती है.
ऐप्लिकेशन के संसाधनों की खास जानकारी
जानें कि Android ऐप्लिकेशन को कैसे स्ट्रक्चर किया जाता है, ताकि ऐप्लिकेशन संसाधनों को ऐप्लिकेशन कोड. इसमें यह जानकारी भी शामिल होती है कि किसी डिवाइस के लिए, अन्य संसाधन कैसे उपलब्ध कराए जा सकते हैं कॉन्फ़िगरेशन.

इन विषयों में भी दिलचस्पी है:

डिवाइस के साथ काम करने वाले डिवाइसों के बारे में खास जानकारी
जानें कि Android अलग-अलग तरह के डिवाइसों पर कैसे काम करता है और अपने ऐप्लिकेशन को हर डिवाइस के हिसाब से ऑप्टिमाइज़ करने या उसकी उपलब्धता को सीमित करने का तरीका अलग-अलग डिवाइसों पर कनेक्ट कर सकें.
Android पर अनुमतियां
जानें कि Android, ऐप्लिकेशन को अनुमति वाले कुछ एपीआई के ऐक्सेस पर कैसे पाबंदी लगाता है जिसमें उन एपीआई का इस्तेमाल करने के लिए उपयोगकर्ता की सहमति ज़रूरी है.