2012-09-21 19 views
8

esto está relacionado con la pregunta how to open an attachment with my applicacion from within the email app? (mime type, intent filter ...) que pensé que lo había resuelto, pero no lo es.Registre el nuevo tipo de mimo en android

Descubrí que algunos clientes de correo electrónico (por ejemplo, el cliente de correo electrónico integrado Samsung Galaxy SII) no respetan el método sendIntent.setType() y al agregar un archivo adjunto a un correo electrónico no agrega el tipo mime especificado en el método setType. La consecuencia es que no puedo abrir el archivo adjunto cuando llega el correo electrónico.

Para poder abrir un archivo adjunto desde cualquier cliente de correo electrónico, creo que lo único que tengo es crear un nuevo tipo de mime que esté asociado a mi extensión personalizada.

Pero no puedo encontrar ninguna forma de registrar un nuevo tipo de mime. Sé que se puede hacer como algunas aplicaciones lo hacen (ASTRO File Explorer), pero no sé dónde más buscar información sobre cómo agregar un nuevo tipo de mime.

EDITAR (2012, Oct, 1st) ASTRO File Explorer agrega solo tipos mime para su proceso. No se pueden leer fuera de su proceso, así que no tengo ningún ejemplo donde funcione.

He estado buscando el código fuente de MimeTypeMap y parece que solo usa un conjunto predefinido de tipos de mime y no puede agregar uno nuevo.

Intenté usar la reflexión (solo para verificar) y pude agregar un tipo de mimo, PERO solo es visible para mi proceso, como si mi proceso tuviera su propia copia de MimeTypeMap, por lo que el cliente de correo electrónico aún no abre el archivo adjunto

alguien puede ayudar?

gracias de antemano

+0

No creo que sea posible. Intenté mirar un tiempo atrás y me di por vencido. Sería bueno para mí no esencial. – Ifor

Respuesta

1

Es mi entendimiento de que su especificación de datos es la base únicamente en la extensión de archivo .xyz. Por lo tanto, cuando lo declara en su filtro de intención, debe asegurarse de estar siendo lo más genérico posible con respecto a todos los parámetros, excepto el patternPath.

Intenta dividirlo en varias <data> etiquetas y asegurarse de que es agnóstica hacia el mimeType:

<data android:scheme="file" />        
    <data android:mimeType="*/*" /> 
    <data android:pathPattern=".*\\.xyz" /> 
    <data android:host="*" /> 

Véase también the documentation on <data> para asegurarse de que todos los subtipos coinciden.

Tengo entendido que la estructura de datos subyacente de su archivo puede causar problemas en algunos dispositivos. Supongamos, por ejemplo, que su tipo de archivo .xyz es XML; el cliente de correo electrónico puede pensar que al proporcionar el tipo de mime text/xml es más específico que el que usted declaró e invocarlo en su lugar.

En tales casos, una solución podría ser declarar filtros de intención múltiple, una vez también incluyendo <data android:mimeType="text/xml" />. (Esto está más o menos en línea con lo que this answer sugiere.)

+0

Ya lo intenté y tampoco funcionó para algunos clientes de correo electrónico (SGII) – richardtz

Cuestiones relacionadas