2012-09-03 14 views
11

en nuestra aplicación, queremos que aparezca en el menú "Compartir a través de". Así que agregamos este filtro de intención a nuestra actividad:filtro de intención para archivos solo

<intent-filter> 
    <action android:name="android.intent.action.SEND" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <data android:mimeType="application/*" /> 
    <data android:mimeType="audio/*" /> 
    <data android:mimeType="image/*" /> 
    <data android:mimeType="text/*" /> 
    <data android:mimeType="video/*" /> 
</intent-filter> 

Funciona y nuestra aplicación aparece en el menú Compartir.

Sin embargo, el filtro intención no hace exactamente lo que queremos conseguir:

  1. que desea que aparezca en el menú para todos los archivos, lo que no es el tipo MIME
  2. queremos aparecer sólo para archivos Y hasta ahora, si el usuario desea compartir un texto simple, ya que su tipo de mímica será de texto/simple, nuestra aplicación aparece en el menú y no la queremos.

¿Cuál sería el filtro de intención correcto para todos los archivos y solo para los archivos?

Gracias de antemano.


Hemos intentado añadir esquema = archivo y host = "" o "*" y no funciona como muchas aplicaciones utilizan un esquema = contenido para compartir contenido basado en archivos.

+0

Lo sentimos para la crianza de una vieja pregunta, He intentado utilizar la categoría "android.intent.category.OPENABLE" y parece funcionar No muestra compartir una página web de Chrome, muestra compartir archivos desde Solid Explorer. ¿Es seguro usar esto o es mejor con esquemas? –

+0

@Giorgio Aresu, no está claro lo que estás preguntando. ¿Has probado ambas opciones? – Snicolas

+0

Intenté ambos. Con los esquemas mencionados en las respuestas, ni siquiera se muestra cuando se comparte, con _openable_ como categoría, funciona compartir un archivo desde un administrador de archivos pero no compartir texto sin formato desde un navegador. Esto es lo que quiero: obtener archivos (todos los tipos de mime), solo archivos (no texto), exactamente lo que quería en su pregunta.Pruebas adicionales mostraron que algunas aplicaciones (photoshop express, galería) comparten uris como texto sin formato o con formatos como "imagen: 3710" que no funcionan con la categoría de apertura. Estoy tratando de resolverlo ... –

Respuesta

7

que desea que aparezca en el menú para todos los archivos, lo que no es el tipo MIME

Pruebe con un tipo MIME del */*.

Queremos que aparezca solo para los archivos. Y hasta ahora, si el usuario desea compartir un texto simple, ya que su tipo de mímica será de texto/simple, nuestra aplicación aparece en el menú y no la queremos. Intentamos agregar scheme = file y host = "" o "*" y no funciona, ya que muchas aplicaciones usan un scheme = content para compartir contenido basado en archivos.

Entonces tienen dos <data> elementos, uno para un esquema de content y uno para un esquema de file.

<data android:mimeType="*/*" /> 
<data android:scheme="content" /> 
<data android:scheme="file" /> 

Sin embargo, tenga en cuenta que un esquema content no significa que sea necesariamente un archivo.

+6

Usando esto, ya no aparece en el menú Compartir, en ninguno de los exploradores de archivos que instalamos. – Snicolas

+0

@Snicolas: OK, prueba dos elementos '', uno para cada esquema. – CommonsWare

+0

No, no funcionó ni usando 2 filtros de intención, uno para cada esquema. – Snicolas

1
  1. Si quieres ser invocado por cualquier tipo de MIME, no coloque una sola mina en el filtro
  2. scheme="file" es la respuesta para ejecutarse sólo en los ficheros. Ahora bien, si la tercera parte applicaiton pasar los datos como content, entonces es (por defiinition) no es un archivo más
+1

Al usar esto, ya no aparece en el menú Compartir, en ninguno de los exploradores de archivos que instalamos. – Snicolas

Cuestiones relacionadas