2013-05-16 10 views
9

में इरादे-फ़िल्टर के तहत कितनी योजना और होस्ट टैग आ सकते हैं मैनिफेस्ट में निर्दिष्ट इरादे-फ़िल्टर टैग के बारे में अधिक जानकारी चाहिए।एंड्रॉइड मेनिफेस्ट

<intent-filter> 
    <data android:host="com.myHost" android:scheme="content"/> 
</intent-filter> 

और: मुझे पता है कि हम दो रूपों में डेटा निर्दिष्ट कर सकते हैं कर रहा हूँ

<intent-filter> 
    <data android:scheme="content"/> 
    <data android:host="com.myHost"/> 
</intent-filter> 

लेकिन मुझे पता है कि कई संयोजनों मौजूद कर सकते हैं,

<intent-filter> 
     <data android:host="com.myHost" android:scheme="content"/> 
     <data android:scheme="content"/> 
     <data android:host="com.myHost1"/> 
</intent-filter> 

या की तरह चाहते हैं:

<intent-filter> 
     <data android:host="com.myHost" android:scheme="content"/> 
     <data android:scheme="content"/> 
     <data android:host="com.myHost1"/> 
     <data android:scheme="content"/> 
     <data android:host="com.myHost2"/> 
</intent-filter> 

अंतिम मामले में, मैं चाहता हूं कि ओ सबसे पहले पता है कि यह & कैसे हो सकता है यह तय किया जाता है कि किस योजना के लिए कौन सा मेजबान उपयोग किया जाना चाहिए, क्योंकि & होस्ट वाले डेटा टैग किसी भी क्रम में हो सकते हैं।

कृपया मदद करें।

+1

आपका डाटा टैग केवल मेजबान निर्दिष्ट पूरी तरह से जिस तरह से अनदेखी कर रहे हैं के साथ पैदा हो जाएगी। Http://developer.android.com/guide/components/intents-filters.html पर Google दस्तावेज़ों में से प्रत्येक विशेषता तत्व में वैकल्पिक है, लेकिन रैखिक निर्भरताएं हैं: यदि कोई योजना नहीं है निर्दिष्ट, मेजबान को नजरअंदाज कर दिया गया है। यदि कोई होस्ट निर्दिष्ट नहीं है, तो पोर्ट को अनदेखा किया जाता है। यदि दोनों योजना और होस्ट निर्दिष्ट नहीं हैं, तो पथ को अनदेखा किया जाता है। – gleenn

उत्तर

10

मुझे पता है कि हम दो रूपों

में डेटा निर्दिष्ट कर सकते हैं एक योजना के लिए content का उपयोग न करें, जब तक आप वास्तव में मतलब है कि आप एक ContentProvider के समर्थन में एक गतिविधि पैदा कर रहे हैं।

<activity 
     android:name=".activities.ShowOrCreateActivity" 
     android:theme="@android:style/Theme.Translucent.NoTitleBar"> 

     <intent-filter> 
      <action android:name="com.android.contacts.action.SHOW_OR_CREATE_CONTACT" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <data android:scheme="mailto" /> 
      <data android:scheme="tel" /> 
     </intent-filter> 
    </activity> 
:

लेकिन मुझे पता है कि यह कर सकते हैं कई संयोजनों मौजूद

अपने फिल्टर <data> के लिए सिर्फ एक विशेषता है, तो चाहते हैं, तो आप निश्चित रूप से इस तरह के संपर्क एप्लिकेशन से इस रूप में विभिन्न मूल्यों, हो सकता है

इसके अलावा, एक घटक में कई <intent-filter> तत्व हो सकते हैं, जिनमें से प्रत्येक तर्कसंगत रूप से अन्य लोगों के साथ OR'd है (किसी भी फ़िल्टर से मेल खाने वाला कोई भी Intent घटक के लिए एक मिलान है)। तो अधिक जटिल परिदृश्यों के लिए, जहां आपके पास <data> तत्व प्रति 2+ विशेषताएँ हैं, तो मैं उन्हें <intent-filter> तत्वों में अलग रखने के इच्छुक हूं।

कैसे है यह जो मेजबान जो योजना

के लिए कोई मैच अच्छा माना जाता है प्रयोग की जाने वाली है कि फैसला किया। इसमें शामिल होने के बारे में अधिक जानने के लिए आप Intent स्वयं की जांच करेंगे।

+0

बहुत बहुत धन्यवाद! तो आदर्श रूप से यदि किसी ऐप को दो सामग्री और मेजबान संयोजन निर्दिष्ट करने की आवश्यकता है, तो उसे दो मंशा-फ़िल्टर में रखना चाहिए! – AndroidGuy

+1

सभी मामलों में काम नहीं करता है, एंड्रॉइड दस्तावेज़ कहते हैं: "नोट: इरादा फ़िल्टर में केवल यूआरआई पैटर्न के लिए एक डेटा तत्व हो सकता है। अतिरिक्त यूआरआई पैटर्न को कैप्चर करने के लिए अलग-अलग इरादे फ़िल्टर बनाएं।" – htafoya

2

@CommonsWare उत्तर का पूरक, ऐसा प्रतीत होता है कि यदि आप इतना विशिष्ट नहीं हैं तो आप दो <data> टैग का उपयोग नहीं कर सकते हैं।

ए) मेरी क्षुधा में से एक में मैं कर सकते हैं:

<data android:scheme="myAppScheme1"/> 

बी) और

<data android:scheme="myAppScheme2" android:host="host2"/> 

सी) लेकिन निम्नलिखित पहली टैग पर ध्यान नहीं देगा (का उपयोग कर myAppScheme1://whatever यूआरआई काम नहीं करेगा):

<data android:scheme="myAppScheme1"/> 
<data android:scheme="myAppScheme2" android:host="host2"/> 

डी) लेकिन अगर मैं पहली बार इस योजना यह दोनों URI के लिए काम करेंगे पूरक:

<data android:scheme="myAppScheme1" android:host="host1"/> 
<data android:scheme="myAppScheme2" android:host="host2"/> 

शायद यदि आप वास्तव में मामले सी की जरूरत है), तो आप बेहतर दो आशय-फिल्टर

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