2011-03-21 9 views
6

¿Es posible (o recomendado) pasar parámetros a los proveedores de contenido a través de URI en Android, de forma similar a cómo las usan las direcciones web? Es decir, ¿puedo usar pares nombre/valor en contenido: // URI?Pasar parámetros a través de URI en Android

Por ejemplo, tengo un proveedor de búsqueda que puede buscar según los nombres. Lo paso un URI como esta:

contenido: //com.example.app/name/john

que devolvería cualquier persona con "John" en sus nombres, incluyendo a John, Johnathon, Johnson, etc.

Quiero tener la opción (pero no la obligación) de buscar por nombres exactos y no encontrar coincidencias parciales. Yo estaba pensando en hacer algo como esto:

contenido:? //com.example.app/name/john exacta = true

que contara el proveedor de búsqueda para devolver sólo los nombres que coincidan exactamente "John. " Pero no he visto ningún otro ejemplo de parámetros usados ​​así en Android. ¿Hay una mejor manera? ¿Que me estoy perdiendo aqui?

Gracias!

Respuesta

1

No, hasta donde he visto, los parámetros se eliminan de las URL del proveedor de contenido (aunque no sé por qué), trabajé alrededor de esto agregando parámetros usando un "/" y cierto prefijo y los analicé de forma manual, algo como esto:

content://com.example.app/name/john/paramexact/true 
+0

Estos son segmentos, los parámetros son un poco diferentes, por ejemplo "content: //com.example.app/table/seg1/123456? Param = value" – WindRider

12

si desea pasar parámetros de consulta se puede utilizar el método appendQueryParameter() en la construcción de su URI

LoaderFactory.createCursorLoader(this, 
       MyProvider.MY_CONTENT_URI.buildUpon().appendQueryParameter(
         MyProvider.MY_PARAM_NAME, 
         myParamValue).build(), projection, null, 
       null, null); 

Y luego acceder al valor de parámetro mediante el getQueryParameter ()

String paramValue = uri.getQueryParameter(MyProvider.MY_PARAM_NAME); 
Cuestiones relacionadas