Registrar un nuevo tipo de mime en android

Esto está relacionado con la cuestión de cómo abrir un archivo adjunto con mi aplicación desde la aplicación de correo electrónico? (Tipo mime, filtro intencional …) que pensé que lo había resuelto, pero no lo es.

He encontrado que algunos clientes de correo electrónico (Samsung Galaxy SII construido en el cliente de correo electrónico, por ejemplo) no respeta el método sendIntent.setType () y al agregar un archivo adjunto a un correo electrónico no está agregando 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.

Así que para poder abrir un archivo adjunto desde cualquier cliente de correo electrónico creo que sólo lo que tengo es crear un nuevo tipo mime que está asociado a mi extensión personalizada.

Pero no puedo encontrar ninguna manera 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 la adición de un nuevo tipo MIME.

EDIT (2012, oct, 1) ASTRO File Explorer agrega sólo tipos mime para su proceso. No pueden ser leídos fuera de su proceso, así que no tengo ningún ejemplo donde funciona.

He estado buscando en el código fuente MimeTypeMap y parece que sólo utiliza un conjunto predefinido de tipos mime y no se puede agregar uno nuevo.

Traté de usar la reflexión (sólo para comprobar) y fue capaz de agregar un tipo mime, pero sólo es visible para mi proceso, como si mi proceso tuviera su propia copia de MimeTypeMap, por lo que el cliente de correo electrónico todavía no se abrirá el archivo adjunto.

Alguien puede ayudar

gracias por adelantado

    Es mi entendimiento que su especificación de datos se basa únicamente en la extensión de archivo .xyz . Por lo tanto, cuando lo declara en su filtro de intenciones, debe asegurarse de que está siendo lo más genérico posible hacia todos los parámetros, excepto el patternPath .

    Trate de dividir en varias etiquetas <data> y asegúrese de que es agnóstico hacia el mimeType :

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

    Consulte también la documentación de <data> para asegurarse de que todos los subtipos coincidan.

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

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

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.