2011-09-09 14 views
21

कोई मुझे Intent श्रेणियों के प्रयोजन की व्याख्या कर सकते हैं? मुझे अपना खुद का और कब बनाना चाहिए? मेरी पुस्तक में Intent श्रेणियों के बारे में लिखा गया एकमात्र चीज यह है कि वे इरादों को समूहबद्ध कर सकते हैं?इरादा श्रेणियों का उद्देश्य क्या हैं?

+0

ऑफटॉप: क्या हम एंड्रॉइड –

उत्तर

33

श्रेणी अकेले बेकार हैं, intent-filter में "implicit intent" के लिए संभावित लक्ष्य का वर्णन करने के लिए उनका उपयोग किया जाता है।

जब आप जानते हैं कि आप कौन सी कक्षा/गतिविधि लॉन्च करना चाहते हैं और startActivity() या startActivityForResult() का उपयोग करें, तो इसे "स्पष्ट इरादा" कहा जाता है।

यहाँ कैसे निहित उद्देश्य से काम के लिए एक सादृश्य है:

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

प्रणाली अब कमरे में चला जाता है और चिल्लाता है "जो तुम में से एक एक PDF फ़ाइल प्रदर्शित कर सकते हैं?"। अनुप्रयोग जो खड़े कर सकते हैं और प्रणाली उन्हें देखता है (इन आवेदनों एक मेल आशय श्रेणी के साथ एक गतिविधि है)।

यह तो आप एक संवाद है, जिसमें आप अनुप्रयोगों में से एक चुन सकते हैं प्रदान करता है: Complete action using


आप अपने अनुप्रयोगों के अपने गतिविधि/BroadcastReceivers/कुछ सेवाओं के उपलब्ध बाहर बनाना चाहते हैं सीमाएं, आप एंड्रॉइड मैनिफेस्ट का उपयोग "इरादा फ़िल्टर" घोषित करने के लिए कर सकते हैं, इसलिए सिस्टम या ऐप से मेल खाने वाले "निहित इरादे" लॉन्च होने पर यह खोला जाता है।

आपको गतिविधि जो लॉन्चर से खोला जाना चाहिए के लिए (उदाहरण के लिए) ऐसा करते हैं:

<activity android:name=".SomeActivity"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

यह ACTION_MAIN कार्रवाई के Androids लांचर से शुरू हो रहा (CATEGORY_LAUNCHER) सुनता है।

आप अपने "लक्ष्य फ़िल्टर" में दो बच्चों के तत्व होते हैं:

  1. action। यह निर्दिष्ट करता है कि "इरादा फ़िल्टर" किस क्रिया को सुनना चाहिए।
  2. एक या एक से अधिक category रों। यह निर्दिष्ट करता है कि गतिविधि कहां होनी चाहिए।

category रों में से एक (उदाहरण के लिए) android.intent.category.DEFAULT, जो गतिविधि बताता पूर्ण स्क्रीन मोड में सामान्य रूप से शुरू होने की जा सकती है। उदाहरण के लिए android.intent.category.TAB -category, एक TabActivity में एक टैब में इस गतिविधि वाणी तो यह केवल एक टैब के रूप में खोला जा सकता है।

एक और उदाहरण android.intent.category.PREFERENCE -category है, जो अपने सेटिंग-गतिविधि के रूप में गतिविधि घोषणा करेंगे जोड़ने की जाएगी।


घोषणा अपनी खुद की category रों कोई भी संभव नहीं है और न ही आवश्यक है।

और भी आपको यह समझने की आवश्यकता होगी कि उन घटनाओं को सिस्टम/अन्य ऐप द्वारा ट्रिगर किया गया है और आप केवल तभी निर्दिष्ट कर सकते हैं जब वे ट्रिगर होने पर प्रतिक्रिया दें और कैसे प्रतिक्रिया दें।

+0

में इरादा श्रेणियों के अनुसार आवेदन का नाम श्रेणियां कर सकते हैं आप यूरी डेटा स्कीम/होस्ट पैटर्न के आधार पर किसी इरादे से मेल खाने के लिए आवश्यक CATEGORY_DEFAULT का उल्लेख करना भूल गए हैं। –

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