2012-09-06 20 views
19

Pongo un log en el método getType() que nunca se imprime. Estoy usando el código de muestra del Bloc de notas. Por favor, explique la primera línea del comentario del documento de Java. La devolución de null de getType() también funciona bien. ¿Cuál es el propósito del método getType()?Android ContentProvider getType() llamado cuándo y por qué

/** 
* This is called when a client calls {@link android.content.ContentResolver#getType(Uri)}. 
* Returns the MIME data type of the URI given as a parameter. 
* 
* @param uri The URI whose MIME type is desired. 
* @return The MIME type of the URI. 
* @throws IllegalArgumentException if the incoming URI pattern is invalid. 
*/ 
@Override 
public String getType(Uri uri) 
{ 
    Log.d("Suparna", "******getType()"); 
    /*switch(uriMatcher.match(uri)) 
    { 
    // ---get all books--- 
    case BOOK_DETAILS: 
     return Book.Book_Details.CONTENT_TYPE; 
     // ---get a particular book--- 
    case BOOK_DETAILS_ID: 
     return Book.Book_Details.CONTENT_ITEM_TYPE; 
    default: 
     throw new IllegalArgumentException("Unsupported URI: " + uri); 
    }*/ 
    return null; 
} 
+4

La razón por la cual esta pregunta no llamó la atención es porque olvidó etiquetarla con "android". :) –

+0

http://stackoverflow.com/questions/5351669/why-use-contentprovider-gettype-to-get-mime-type puede ser de ayuda u. – boiledwater

Respuesta

33

getType(Uri uri) sólo se suele llamar después de una llamada a ContentResolver#getType(Uri uri). Lo utilizan las aplicaciones (ya sean otras aplicaciones de terceros, si se ha exportado ContentProvider, o la suya) para recuperar el tipo MIME de la URL de contenido determinada. Si su aplicación no está interesada en el tipo MIME de los datos, está perfectamente bien simplemente tener el método return null.

+0

Ok. Como ... dependiendo del tipo de datos del Uri, si desea hacer algo específico con los datos recuperados, como abrir un navegador o correo. Creo que este es el caso de uso probable. ¡¡¡Gracias!!! –

+1

No implementar getType (Uri) es flojo en el mejor de los casos. ** Puede ** estar bien solo si usted es el único cliente de su proveedor. De lo contrario, estás haciendo suposiciones sobre el uso de otras personas. – spaaarky21

+2

En realidad, en lugar de devolver NULL, es mejor escribir algo como: ** throw new UnsupportedOperationException ("getType no está implementado"); ** – zkvarz

3

Este método de ContentProvidergetType() se usa principalmente cuando permite que su ContentProvider interactúe con otras aplicaciones de terceros. Este tipo MIME es utilizado por el sistema Android para encontrar qué aplicaciones pueden manejarlo.

Cuestiones relacionadas