2012-09-03 7 views
11

फ़ाइलों के लिए इरादा फ़िल्टर, हम "के माध्यम से साझा करें" मेनू में दिखना चाहते हैं। इसलिए हमने इस गतिविधि को हमारी गतिविधि में जोड़ा:हमारे ऐप में केवल

<intent-filter> 
    <action android:name="android.intent.action.SEND" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <data android:mimeType="application/*" /> 
    <data android:mimeType="audio/*" /> 
    <data android:mimeType="image/*" /> 
    <data android:mimeType="text/*" /> 
    <data android:mimeType="video/*" /> 
</intent-filter> 

यह काम करता है और हमारा ऐप शेयर मेनू में दिखाई देता है।

फिर भी, लक्ष्य फ़िल्टर वास्तव में ऐसा नहीं है कि हम क्या हासिल करना चाहते:

  1. हम सभी फ़ाइलों के लिए मेनू, जो कुछ भी वहाँ माइम प्रकार
  2. है हम केवल प्रकट करना चाहते हैं में दिखाना चाहते हैं फाइलों के लिए। और अब तक, यदि उपयोगकर्ता एक साधारण पाठ साझा करना चाहता है, क्योंकि इसका माइम प्रकार टेक्स्ट/सादा होगा, तो हमारा ऐप मेनू में दिखाई देता है और हम इसे नहीं चाहते हैं।

सभी फ़ाइलों के लिए और केवल फाइलों के लिए सही इरादा-फ़िल्टर क्या होगा?

अग्रिम धन्यवाद।


हम योजना = फ़ाइल और मेजबान = "" या "*" और यह काम नहीं करता के रूप में कई एप्लिकेशन एक योजना = सामग्री का उपयोग साझा करने के लिए फ़ाइल आधारित सामग्री जोड़ने की कोशिश की।

+0

एक पुराने सवाल को लाने के लिए क्षमा करें, मुझे का उपयोग कर श्रेणी "android.intent.category.OPENABLE" करने की कोशिश की और काम करता है। यह क्रोम से वेबपृष्ठ साझा नहीं दिखाता है, यह सॉलिड एक्सप्लोरर से फ़ाइलों को साझा करना दिखाता है। क्या इसका उपयोग सुरक्षित है या यह योजनाओं के साथ बेहतर है? –

+0

@ जॉर्जियो एरेशू, यह स्पष्ट नहीं है कि आप क्या पूछ रहे हैं। क्या आपने दोनों विकल्पों को आजमाया? – Snicolas

+0

मैंने दोनों की कोशिश की। जवाबों में उल्लिखित योजनाओं के साथ, जब साझाकरण के दौरान _openable_ के साथ यह फ़ाइल फ़ाइल प्रबंधक से फ़ाइल साझा करने में काम करता है लेकिन ब्राउज़र से सादा पाठ साझा नहीं करता है, तो साझा करने के दौरान भी यह दिखाया नहीं जाता है। यह वही है जो मैं चाहता हूं: फाइलें (सभी माइम प्रकार) प्राप्त करें, केवल फाइलें (पाठ नहीं), जो आप अपने प्रश्न में वही चाहते थे।आगे के परीक्षण से पता चला है कि कुछ ऐप (फ़ोटोशॉप एक्सप्रेस, गैलरी) यूरी को सादे पाठ के रूप में साझा करते हैं या "छवि: 3710" जैसे प्रारूपों के साथ साझा करते हैं जो खुले वर्ग के साथ काम नहीं करते हैं। मैं इसे समझने की कोशिश कर रहा हूं ... –

उत्तर

7

हम सभी फ़ाइलों के लिए मेनू में प्रदर्शित करने के, जो कुछ भी वहाँ माइम प्रकार है

*/* की एक MIME प्रकार का प्रयास करना चाहते हैं।

हम केवल फाइलों के लिए दिखना चाहते हैं। और अब तक, यदि उपयोगकर्ता एक साधारण पाठ साझा करना चाहता है, क्योंकि इसका माइम प्रकार टेक्स्ट/सादा होगा, तो हमारा ऐप मेनू में दिखाई देता है और हम इसे नहीं चाहते हैं। हमने योजना = फ़ाइल और होस्ट = "" या "*" जोड़ने की कोशिश की है और यह फ़ाइल आधारित सामग्री साझा करने के लिए एक ऐप/सामग्री का उपयोग करने वाले कई ऐप काम नहीं करता है।

फिर दो <data> तत्वों, file की एक योजना के लिए content और एक की एक योजना के लिए एक है।

<data android:mimeType="*/*" /> 
<data android:scheme="content" /> 
<data android:scheme="file" /> 

हालांकि, ध्यान भालू है कि एक content योजना मतलब यह नहीं है कि यह जरूरी एक फाइल है।

+6

इसका उपयोग करते हुए, हम अब भी इंस्टॉल किए गए फ़ाइल एक्सप्लोरर में से किसी एक में, शेयर मेनू में दिखाई नहीं देते हैं। – Snicolas

+0

@ सिनिकोलस: ठीक है, प्रत्येक योजना के लिए दो '' तत्वों को आजमाएं। – CommonsWare

+0

नहीं, यह न तो 2 मंशा फ़िल्टरों का उपयोग करके काम करता था, प्रत्येक योजना के लिए एक। – Snicolas

1
  1. आप किसी भी माइम प्रकार के लिए लागू किया जा चाहते हैं, फिल्टर
  2. scheme="file" में एक भी मेरा प्रकार नहीं डाल सकते हैं केवल फाइलों पर चलने के लिए जवाब है। अब अगर 3 पार्टी applicaiton content के रूप में डेटा पास है, तो यह (defiinition द्वारा) एक फ़ाइल नहीं किसी भी अधिक
+1

इसका उपयोग करके, हम अब इंस्टॉल किए गए फ़ाइल एक्सप्लोरर में से किसी एक में, शेयर मेनू में दिखाई नहीं देते हैं। – Snicolas

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