Android: Registrieren von Intent Filter zum Öffnen eines E-Mail-Anhangs mit meiner App

Ich habe eine App, die benutzerdefinierte Dateitypen (.sor) generiert. Innerhalb der App habe ich eine Funktion zum Senden einer E-Mail mit einer dieser Dateien im Anhang. Ich habe auch einen Intent-Filter, mit dem die App in der Liste der Apps angezeigt werden kann, die diesen Dateityp öffnen können. Dadurch kann ich die Datei (manchmal) mit der App direkt über den E-Mail-Client des Benutzers auf dem Telefon öffnen.

Dies funktioniert jedoch nur, wenn die E-Mail von einem PC-E-Mail-Client stammt, und nicht, wenn die E-Mail von einem Telefon empfangen wird. Wenn ich beispielsweise eine dieser .sor-Dateien generiere und dann mit meiner App eine E-Mail an mein eigenes E-Mail-Konto sende, erhalte ich die E-Mail auf meinem Telefon, kann den Anhang jedoch nicht mit meiner App öffnen ... ABER Wenn ich die E-Mail an dasselbe Konto sende und sie auf meinem PC (mit Thunderbird) anstatt auf dem Telefon öffne und sie dann entweder weiterleite oder als neue E-Mail an mein Telefon sende, kann ich dieselbe E-Mail-App verwenden am Telefon, um den Anhang mit meiner App zu öffnen ... Ich spreche hier nur von einem E-Mail-Konto. Der einzige Unterschied besteht darin, woher die E-Mail gesendet wurde, von meinem Telefon oder von meinem Windows 7-PC.

Das einzige, woran ich denken kann, ist, dass beim Senden der E-Mail vom Telefon aus ein anderer MIME-Typ in den Anhang eingebettet wird als beim Senden von Thunderbird auf meinem PC ... Ich gebe den MIME-Typ als "application / "octet-stream", wenn ich die E-Mail aus meiner App heraus sende und einen Absichtsfilter habe, der nach diesem MIME-Typ sucht ... aber er funktioniert nicht richtig.

Mein Vorsatzfilter:

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

Die Absicht, die ich beim Senden der Datei in einem E-Mail-Anhang vom Telefon an den E-Mail-Client des Telefons weitergebe:

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

Auch hier funktioniert das Senden der E-Mail mit der angehängten Datei ordnungsgemäß. Wenn ich dieselbe Datei von einem PC-E-Mail-Client (z. B. Outlook oder Thunderbird) per E-Mail an das Telefon zurücksende, kann ich die Datei mit meiner Anwendung öffnen direkt aus der E-Mail-App des Telefons. Das Problem ist, wenn ich die E-Mail am Telefon öffne, ohne meinen PC als Vermittler zu durchlaufen, kann ich den Anhang nicht öffnen. Die einzige Option, die mir zur Verfügung steht, ist "Auf SD-Karte speichern".

Um es noch einmal zusammenzufassen, ich habe 2 E-Mails auf meinem Telefon, die identisch sind, mit derselben angehängten Datei und beiden, die ursprünglich von meinem Antrag an dasselbe Konto gesendet wurden (beide wurden auch von demselben Konto empfangen), aber mit dem Anhang, der durchgegangen ist Mein PC als unnötiger Mittelsmann funktioniert ordnungsgemäß und der direkt von meinem Telefon gesendete und empfangene nicht.

Irgendwelche Ideen? Danke im Voraus.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage