2012-09-17 8 views
5

मेरे पास एक ऐप है जो कस्टम फ़ाइल प्रकार (.sor) उत्पन्न करता है। ऐप के अंदर मेरे पास संलग्न इन फ़ाइलों में से एक के साथ एक ईमेल भेजने के लिए एक सुविधा है। मेरे पास ऐप की सूची में ऐप दिखाने की अनुमति देने के लिए एक इरादा फ़िल्टर भी है जो इस प्रकार की फ़ाइल खोल सकता है। यह मुझे फोन पर उपयोगकर्ता ईमेल क्लाइंट से सीधे ऐप के साथ फ़ाइल खोलने की अनुमति देता है।एंड्रॉइड: मेरे ऐप के साथ ईमेल अटैचमेंट खोलने के लिए इरादा फ़िल्टर पंजीकृत करना

हालांकि, यह केवल तब काम करता है जब ईमेल किसी पीसी ईमेल क्लाइंट से आता है, और फ़ोन से ईमेल प्राप्त होने पर काम नहीं करेगा। उदाहरण के लिए, यदि मैं इनमें से एक .sor फ़ाइलों को उत्पन्न करता हूं और फिर अपने ऐप का उपयोग अपने ईमेल खाते में एक ईमेल भेजने के लिए करता हूं तो मुझे अपने फोन पर ईमेल प्राप्त होगा लेकिन मेरे ऐप के साथ लगाव खोलने में सक्षम नहीं होगा ... लेकिन , अगर मैं एक ही खाते में ईमेल भेजता हूं और फोन पर बजाए अपने पीसी (थंडरबर्ड के साथ) खोलता हूं और फिर इसे अग्रेषित करता हूं या इसे अपने फोन पर एक नया ईमेल भेजता हूं तो मैं उसी ईमेल ऐप का उपयोग कर पाऊंगा फोन पर मेरे ऐप के साथ लगाव खोलने के लिए ... मैं केवल एक ईमेल अकाउंट के बारे में बात कर रहा हूं, केवल अंतर यह है कि ईमेल, मेरे फोन या मेरी विंडोज 7 पीसी से भेजा गया था।

एकमात्र चीज जो मैं सोच सकता हूं वह यह है कि जब मैं फोन से ईमेल भेजता हूं तो जब मैं इसे अपने पीसी पर थंडरबर्ड से भेजता हूं तो अटैचमेंट में एक अलग माइम-प्रकार एम्बेड किया जा रहा है ... मैं माइम प्रकार निर्दिष्ट करता हूं जब मैं अपने ऐप से ईमेल भेजता हूं, तो "एप्लिकेशन/ऑक्टेट-स्ट्रीम" के रूप में, और मेरे पास एक इरादा फ़िल्टर है जो इस माइम प्रकार की तलाश करता है ... लेकिन यह सही तरीके से काम नहीं करता है।

मेरे लक्ष्य फ़िल्टर:

<intent-filter> 
    <action android:name="android.intent.action.VIEW" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <data android:mimeType="application/octet-stream" /> 
    <data android:scheme="file" /> 
</intent-filter> 

आशय है कि मैं जब फोन से एक ईमेल संलग्नक में फ़ाइल को भेजने फोन ईमेल क्लाइंट के पास:

Intent sendIntent = new Intent(Intent.ACTION_SEND); 
sendIntent.setType("application/octet-stream"); 
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + fullPathString)); 
sendIntent.putExtra(Intent.EXTRA_SUBJECT, "FiberDroid OTDR Trace File: \"" + ContextMenuFileName + "\""); 
sendIntent.putExtra(Intent.EXTRA_TEXT, "This e-mail was sent from the TTI FiberDroid Android application."); 
startActivity(Intent.createChooser(sendIntent, "Select E-Mail Application")); 

फिर, भेजने संलग्न फाइल के साथ ईमेल सही ढंग से काम करता है ... और यदि मैं एक ही फाइल को एक पीसी ईमेल क्लाइंट (जैसे दृष्टिकोण या थंडरबर्ड) से फोन पर वापस ईमेल करता हूं तो मैं सीधे अपने फोन के साथ फोन ईमेल ऐप से फ़ाइल खोलने में सक्षम हूं । समस्या यह है कि, अगर मैं अपने पीसी के माध्यम से बिना किसी मध्यस्थ के फोन पर ईमेल खोलता हूं, तो मैं अटैचमेंट नहीं खोल सकता, मुझे दिया गया एकमात्र विकल्प "एसडी कार्ड में सहेजें" है ...

तो संक्षेप में, मेरे फोन पर मेरे पास 2 ईमेल हैं जो एक ही फाइल संलग्न हैं और मूल रूप से मेरे आवेदन से उसी खाते में भेजे गए हैं (दोनों एक ही खाते से प्राप्त होते हैं), लेकिन मेरे पीसी के माध्यम से जो एक में संलग्न है अनावश्यक बिचौलिया सही तरीके से काम करता है, और सीधे मेरे फोन से भेजा और प्राप्त किया गया है।

कोई विचार? पहले ही, आपका बहुत धन्यवाद।

+0

क्षमा करता है, तो ऐसा लगता है मैं बार-बार यह बताया गया है, यह मेरे लिए भ्रमित लग रहा था के रूप में मैं इसे लिखा था तो मैं यह जानना लोगों को पढ़ने में भ्रमित हो जाएगा ... – CHollman82

उत्तर

8

मैंने इसे हल किया है, ज्यादातर अंधेरे में शूटिंग करके और वास्तव में समझ में नहीं आया कि मैंने इसे हल क्यों किया है, लेकिन मेरे पास अब मेरे इरादे में मेरे इरादे फ़िल्टर के लिए क्या है, जहां ".sor" एक्सटेंशन है मेरे कस्टम फ़ाइल प्रकार का। यह सभी ईमेल और फ़ाइल प्रबंधन क्षुधा है कि मैं कोशिश की है, सहित K-9 मेल और खगोल के साथ काम करता है:

<!-- For email attachments --> 
<intent-filter> 
    <action android:name="android.intent.action.VIEW" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <data android:mimeType="application/*" host="*" android:pathPattern=".*.sor" android:scheme="content" /> 
</intent-filter> 

<!-- For file browsers --> 
<intent-filter> 
    <action android:name="android.intent.action.VIEW"/> 
    <category android:name="android.intent.category.DEFAULT"/> 
    <data android:mimeType="application/*" host="*" android:pathPattern=".*.sor" android:scheme="file" /> 
</intent-filter> 
+0

क्या आपका कोड भी जीमेल के साथ काम कर रहा है? – Giuseppe

+1

मुझे आपके "ईमेल अनुलग्नकों के लिए" समाधान में कोई समस्या है। यह काम करता है, लेकिन यह एक समस्या का भी कारण बनता है, जहां क्लिक किया गया एक नई जीमेल अधिसूचना है, तो यह मुझसे पूछता है कि क्या मैं अपने आवेदन में खोलना चाहता हूं। और अगर मैं हाँ कहता हूं, तो यह दुर्घटनाग्रस्त हो जाता है। क्या किसी के पास इसका समाधान है? – BriCo84

+2

मुझे उत्तर मिला है कि किसी अन्य उपयोगकर्ता से ऊपर की अपनी टिप्पणी के लिए धन्यवाद।@richardleggett माइम-प्रकार को एप्लिकेशन/* पर सेट करने का मतलब है कि उपयोगकर्ता को एक चुनने वाला व्यक्ति मिलेगा जो जीमेल/ईमेल और आपके ऐप में सभी नई ईमेल सूचनाएं खोलने के लिए कहता है। इसके बजाए उपयोग करें: <डेटा एंड्रॉइड: माइम टाइप = "एप्लिकेशन/ऑक्टेट-स्ट्रीम" एंड्रॉइड: होस्ट = "*" एंड्रॉइड: pathPattern = "। * \\। एक्सटेंशन" /> – BriCo84

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