<गतिविधि-उपनाम>

सिंटैक्स:
<activity-alias android:enabled=["true" | "false"]
                android:exported=["true" | "false"]
                android:icon="drawable resource"
                android:intentMatchingFlags=["none" | "enforceIntentFilter" | "allowNullAction"]
                android:label="string resource"
                android:name="string"
                android:permission="string"
                android:targetActivity="string" >
    ...
</activity-alias>
इसमें शामिल है:
<application>
इसमें ये शामिल हो सकते हैं:
<intent-filter>
<meta-data>
<property>
विवरण:
गतिविधि के लिए कोई दूसरा नाम, जिसे targetActivity एट्रिब्यूट से तय किया जाता है. टारगेट, उसी ऐप्लिकेशन में होना चाहिए जिसमें ऐलिस है. साथ ही, इसे मेनिफ़ेस्ट में ऐलिस से पहले घोषित किया जाना चाहिए.

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

उदाहरण के लिए, ऐसा हो सकता है कि ऐप्लिकेशन के एलियास पर मौजूद इंटेंट फ़िल्टर, "android.intent.action.MAIN" और "android.intent.category.LAUNCHER" फ़्लैग तय करें. इस वजह से, ऐप्लिकेशन लॉन्चर में एलियास दिखता है. भले ही, टारगेट ऐक्टिविटी पर मौजूद किसी भी फ़िल्टर ने इन फ़्लैग को सेट न किया हो.

targetActivity को छोड़कर, <activity-alias> एट्रिब्यूट, <activity> एट्रिब्यूट का सबसेट होते हैं. सबसेट में मौजूद एट्रिब्यूट के लिए, टारगेट के लिए सेट की गई कोई भी वैल्यू, उपनाम में नहीं दिखती. हालांकि, सबसेट में शामिल नहीं किए गए एट्रिब्यूट के लिए, टारगेट गतिविधि के लिए सेट की गई वैल्यू, एलियास पर भी लागू होती हैं.

एट्रिब्यूट:
android:enabled
क्या सिस्टम, इस एलियास के ज़रिए टारगेट गतिविधि को इंस्टैंशिएट कर सकता है. "true" अगर ऐसा किया जा सकता है और "false" अगर ऐसा नहीं किया जा सकता. डिफ़ॉल्ट वैल्यू "true" है.

<application> एलिमेंट का अपना enabled एट्रिब्यूट होता है. यह ऐप्लिकेशन के सभी कॉम्पोनेंट पर लागू होता है. इसमें गतिविधि के एलियास भी शामिल हैं. सिस्टम को टारगेट ऐक्टिविटी को एलियास के ज़रिए इंस्टैंशिएट करने के लिए, <application> और <activity-alias>, दोनों एट्रिब्यूट "true" होने चाहिए. अगर इनमें से कोई भी "false" है, तो उपनाम काम नहीं करेगा.

android:exported
इससे यह तय होता है कि अन्य ऐप्लिकेशन के कॉम्पोनेंट, इस एलियास के ज़रिए टारगेट ऐक्टिविटी लॉन्च कर सकते हैं या नहीं. "true" अगर वे ऐसा कर सकते हैं और "false" अगर वे ऐसा नहीं कर सकते. अगर "false" है, तो टारगेट गतिविधि को सिर्फ़ इन तरीकों से लॉन्च किया जा सकता है: ऐप्लिकेशन के कॉम्पोनेंट, ऐप्लिकेशन के एलियास के तौर पर काम कर रहे हों या ऐप्लिकेशन का User ID एक जैसा हो.

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

android:icon
एलियास के ज़रिए उपयोगकर्ताओं को टारगेट गतिविधि दिखाने के लिए आइकॉन. ज़्यादा जानकारी के लिए, <activity> एलिमेंट का icon एट्रिब्यूट देखें.
android:intentMatchingFlags

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

<activity-alias> टैग पर सेट की गई वैल्यू, टारगेट <activity> पर सेट की गई वैल्यू को बदल देती है. इसके अलावा, यह वैल्यू उस खास उपनाम के लिए <application> से इनहेरिट की गई वैल्यू को भी बदल देती है. अगर इसे एलियास पर साफ़ तौर पर तय नहीं किया गया है, तो यह टारगेट ऐक्टिविटी या ऐप्लिकेशन के व्यवहार को इनहेरिट करता है.

इसकी वैल्यू, यहां दिए गए एक या उससे ज़्यादा फ़्लैग में से कोई एक होनी चाहिए. फ़्लैग को '|' से अलग करें:

झंडा ब्यौरा
none इससे, आने वाले इंटेंट के लिए मैचिंग के सभी खास नियम बंद हो जाते हैं. एक से ज़्यादा फ़्लैग तय करते समय, अलग-अलग वैल्यू को इस तरह से तय किया जाता है कि none फ़्लैग को प्राथमिकता दी जाती है.
enforceIntentFilter

इससे आने वाले इंटेंट के लिए, ज़्यादा सटीक मैचिंग लागू होती है:

  • एक्सप्लिसिट इंटेंट, टारगेट कॉम्पोनेंट के इंटेंट फ़िल्टर से मेल खाने चाहिए.
  • कार्रवाई के बिना इंटेंट, किसी भी इंटेंट फ़िल्टर से मेल नहीं खाते.
allowNullAction

यह मैचिंग के नियमों को आसान बनाता है, ताकि बिना किसी कार्रवाई वाले इंटेंट को मैच किया जा सके. इस फ़्लैग का इस्तेमाल enforceIntentFilter के साथ किया जाता है, ताकि ये काम किए जा सकें:

  • एक्सप्लिसिट इंटेंट, टारगेट कॉम्पोनेंट के इंटेंट फ़िल्टर से मेल खाने चाहिए.
  • कार्रवाई के बिना इंटेंट को किसी भी इंटेंट फ़िल्टर से मैच करने की अनुमति होती है.

ज़्यादा जानकारी के लिए, Android 16 (एपीआई लेवल 36) के व्यवहार में हुए बदलावों के बारे में जानकारी देने वाले पेज पर ज़्यादा सुरक्षित इंटेंट सेक्शन देखें.

android:label
यह उपनाम के लिए ऐसा लेबल होता है जिसे उपयोगकर्ता आसानी से पढ़ सकते हैं. यह लेबल, उपनाम के ज़रिए उपयोगकर्ताओं को दिखाया जाता है. ज़्यादा जानकारी के लिए, <activity> एलिमेंट का label एट्रिब्यूट देखें.
android:name
दूसरे ईमेल पते के लिए यूनीक नाम. नाम, पूरी तरह क्वालिफ़ाइड क्लास के नाम जैसा दिखता है. टारगेट गतिविधि के नाम के उलट, उपनाम कोई भी हो सकता है. यह किसी क्लास का नाम नहीं है.
android:permission
यह उस अनुमति का नाम है जो क्लाइंट के पास टारगेट गतिविधि को लॉन्च करने के लिए होनी चाहिए. इसके अलावा, क्लाइंट के पास उपनाम का इस्तेमाल करके गतिविधि को कुछ काम करने के लिए कहने की अनुमति भी होनी चाहिए. अगर startActivity() या startActivityForResult() का इस्तेमाल करने वाले व्यक्ति को अनुमति नहीं दी जाती है, तो टारगेट गतिविधि चालू नहीं होती.

यह एट्रिब्यूट, टारगेट गतिविधि के लिए सेट किए गए किसी भी अनुमति के सेट को बदल देता है. अगर इसे सेट नहीं किया गया है, तो एलियास के ज़रिए टारगेट को चालू करने के लिए अनुमति की ज़रूरत नहीं होती.

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

android:targetActivity
उस गतिविधि का नाम जिसे उपनाम के ज़रिए चालू किया जा सकता है. यह नाम, मेनिफ़ेस्ट में मौजूद उस <activity> एलिमेंट के name एट्रिब्यूट से मेल खाना चाहिए जो ऐलियास से पहले आता है.
इसे इसमें पेश किया गया:
एपीआई लेवल 1
यह भी देखें:
<activity>