Neuen Mime-Typ in Android registrieren

8

Das hängt mit der Frage Wie öffne ich einen Anhang mit meiner Anwendung in der E-Mail App? (Mime-Typ, Intent-Filter ...) ich dachte, ich hätte es gelöst, aber es ist nicht.

Ich habe festgestellt, dass einige E-Mail-Clients (z. B. der in Samsung Galaxy SII integrierte E-Mail-Client) die sendIntent.setType () -Methode nicht berücksichtigen und beim Hinzufügen eines Anhangs zu einer E-Mail nicht den angegebenen MIME-Typ hinzufügt die setType-Methode. Die Folge ist, dass ich den Anhang nicht öffnen kann, wenn die E-Mail ankommt.

Um also einen Anhang von einem beliebigen E-Mail-Client aus öffnen zu können, denke ich, dass ich nur einen neuen MIME-Typ erstellen kann, der meiner benutzerdefinierten Erweiterung zugeordnet ist.

Aber ich kann keine Möglichkeit finden, einen neuen Mime-Typ zu registrieren. Ich weiß, dass es so gemacht werden kann, wie es einige Apps tun (ASTRO File Explorer), aber ich weiß nicht, wo ich sonst nach Informationen zum Hinzufügen eines neuen MIME-Typs suchen könnte.

BEARBEITEN (2012, 1. Oktober) ASTRO File Explorer fügt nur MIME-Typen für seinen Prozess hinzu. Sie können nicht außerhalb ihres Prozesses gelesen werden, also habe ich kein Beispiel, wo es funktioniert.

Ich habe mir den MimeTypeMap-Quellcode angesehen und sieht aus, als ob er nur einen vordefinierten Satz von MIME-Typen verwendet und Sie können keinen neuen hinzufügen.

Ich habe versucht, mit Reflection (nur um zu überprüfen) und konnte einen Mime-Typ hinzufügen, aber es ist nur für meinen Prozess sichtbar, als ob mein Prozess eine eigene Kopie der MimeTypeMap hatte, so dass der E-Mail-Client immer noch nicht geöffnet wird der Anhang.

kann jemand helfen?

Danke im Voraus

    
richardtz 21.09.2012, 09:42
quelle

1 Antwort

1

Ich nehme an, dass Ihre Datenspezifikation ausschließlich auf der Dateierweiterung .xyz basiert. Wenn Sie es also in Ihrem Intent-Filter deklarieren, müssen Sie sicherstellen, dass Sie für alle Parameter mit Ausnahme von patternPath so allgemein wie möglich sind.

Versuchen Sie es in mehrere <data> Tags aufzuteilen und stellen Sie sicher, dass es in Richtung mimeType :

agnostisch ist %Vor%

Siehe auch die Dokumentation zu <data> , um sicherzustellen, dass alle Subtypen übereinstimmen.

Ich verstehe, dass die zugrundeliegende Datenstruktur Ihrer Datei auf einigen Geräten Probleme verursachen kann. Angenommen, Ihr .xyz -Dateityp ist XML; Der E-Mail-Client könnte der Meinung sein, dass die Angabe des Mime-Typs text/xml spezifischer ist als der von Ihnen deklarierte und rufen Sie ihn stattdessen auf.

In solchen Fällen besteht die Lösung darin, mehrere Intent-Filter zu deklarieren, die auch <data android:mimeType="text/xml" /> enthalten. (Dies steht mehr oder weniger im Einklang mit dem, was diese Antwort vorschlägt.)

    
Paul Lammertsma 05.10.2012 16:34
quelle