Android: регистрация Intent Filter для открытия вложения электронной почты с моим приложением

У меня есть приложение, которое генерирует пользовательские типы файлов (.sor). Внутри приложения у меня есть возможность отправить электронное письмо с одним из прикрепленных файлов. У меня также есть фильтр намерений, позволяющий приложению отображаться в списке приложений, которые могут открывать файлы этого типа. Это позволяет мне (иногда) открывать файл с приложением прямо из почтового клиента пользователя на телефоне.

Однако это работает только тогда, когда электронная почта поступает от почтового клиента ПК, и не будет работать, когда электронная почта получена с телефона. Например, если я сгенерирую один из этих файлов .sor, а затем с помощью своего приложения отправлю электронное письмо на свою учетную запись электронной почты, я получу письмо на свой телефон, но не смогу открыть вложение с моим приложением ... НО , если я отправлю электронное письмо на ту же учетную запись и открою его на своем компьютере (с Thunderbird) вместо телефона, а затем переадресую его или отправлю как новое электронное письмо на мой телефон, я смогу использовать то же самое приложение электронной почты на телефоне, чтобы открыть вложение с моим приложением ... Я говорю здесь только об одной учетной записи электронной почты, единственное различие заключается в том, откуда было отправлено электронное письмо, с моего телефона или моего компьютера с Windows 7.

Единственное, о чем я могу думать, это то, что когда я отправляю электронное письмо с телефона, во вложенный файл внедряется другой тип пантомимы, чем когда я отправляю его из Thunderbird на моем компьютере ... Я указываю тип пантомимы как & quot; / октет-поток & Quot; когда я отправляю письмо из моего приложения, и у меня есть фильтр намерений, который ищет этот тип MIME ... но он не работает правильно.

Мой фильтр намерений:

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

Опять же, отправка электронного письма с прикрепленным файлом работает правильно ... и если я отправлю этот же файл обратно на телефон с помощью почтового клиента на ПК (например, Outlook или Thunderbird), я смогу открыть файл с помощью своего приложения. прямо из приложения электронной почты телефонов. Проблема заключается в том, что если я открываю электронную почту на телефоне, не пройдя через компьютер в качестве посредника, я не могу открыть вложение, единственная опция, которую мне дают, - "Сохранить на SD-карту" ...

Напомним, что на моем телефоне есть 2 одинаковых электронных письма, с одним и тем же приложенным файлом, и оба первоначально отправлены из моего приложения на один и тот же аккаунт (оба также получены с одного и того же аккаунта), но вложение в том, которое прошло мой ПК как ненужный посредник работает правильно, а тот, который был отправлен и получен непосредственно с моего телефона, - нет.

Есть идеи? Заранее спасибо.

Ответы на вопрос(1)

Ваш ответ на вопрос