Android: Rejestrowanie zamiaru filtrowania, aby otworzyć załącznik e-mail z moją aplikacją

Mam aplikację, która generuje niestandardowe typy plików (.sor). W aplikacji mam funkcję wysyłania wiadomości e-mail z załączonym jednym z tych plików. Mam też filtr intencji, który umożliwia aplikacji wyświetlanie się na liście aplikacji, które mogą otwierać ten typ pliku. Dzięki temu mogę (czasami) otworzyć plik za pomocą aplikacji bezpośrednio od klienta poczty e-mail w telefonie.

Jednak działa to tylko wtedy, gdy wiadomość e-mail pochodzi z klienta poczty e-mail na komputerze i nie będzie działać, gdy wiadomość e-mail zostanie odebrana z telefonu. Na przykład, jeśli wygeneruję jeden z tych plików .sor, a następnie użyję mojej aplikacji do wysłania wiadomości e-mail na moje własne konto e-mail, otrzymam wiadomość e-mail na mój telefon, ale nie będę w stanie otworzyć załącznika z moją aplikacją ... ALE , jeśli wyślę e-mail na to samo konto i otworzę je na moim komputerze (za pomocą Thunderbirda) zamiast na telefon, a następnie przekażę je dalej lub wyślę jako nowy e-mail do mojego telefonu, będę mógł korzystać z tej samej aplikacji e-mail w telefonie, aby otworzyć załącznik z moją aplikacją ... Mówię tu tylko o jednym koncie e-mail, jedyną różnicą jest to, skąd e-mail został wysłany, mój telefon lub mój komputer z systemem Windows 7.

Jedyną rzeczą, o której mogę myśleć, jest to, że kiedy wysyłam wiadomość e-mail z telefonu, do załącznika dołączany jest inny typ MIME niż gdy wysyłam go z Thunderbirda na moim komputerze ... Określam typ MIME jako „aplikację / octet-stream ”, gdy wysyłam wiadomość e-mail z mojej aplikacji i mam filtr intencji, który szuka tego typu MIME ... ale nie działa poprawnie.

Mój filtr intencji:

<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>

Zamiarem, który przekazuję klientowi poczty e-mail podczas wysyłania pliku w załączniku e-mail z telefonu:

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"));

Ponownie, wysłanie e-maila z załączonym plikiem działa poprawnie ... i jeśli wyślę ten sam plik z powrotem do telefonu z klienta poczty e-mail na komputerze (takiego jak outlook lub thunderbird), mogę otworzyć plik za pomocą mojej aplikacji bezpośrednio z aplikacji e-mailowej telefonu. Problem polega na tym, że jeśli otworzę e-mail w telefonie bez przechodzenia przez komputer jako pośrednik, nie mogę otworzyć załącznika, jedyną opcją, którą otrzymałem, jest „Zapisz na karcie SD” ...

Podsumowując, mam 2 e-maile w moim telefonie, które są identyczne, z tym samym załączonym plikiem i oba zostały wysłane z mojej aplikacji na to samo konto (oba otrzymane z tego samego konta), ale załącznik w tym, który przeszedł mój komputer jako niepotrzebny pośrednik działa poprawnie, a ten wysłany i odebrany bezpośrednio z mojego telefonu nie działa.

Jakieś pomysły? Z góry dziękuję.

questionAnswers(1)

yourAnswerToTheQuestion