2012-09-06 15 views
19

Ho inserito un log in metodo getType() che non viene mai stampato. Sto usando il codice di esempio del blocco note. Si prega di spiegare la 1a riga del commento del documento Java. Restituire null da getType() funziona anche bene. Qual è lo scopo del metodo getType()?ContentProvider Android getType() ha chiamato quando e perché

/** 
* 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

Il motivo per cui questa domanda non ha attirato l'attenzione è perché hai dimenticato di taggarlo con "android". :) –

+0

http://stackoverflow.com/questions/5351669/why-use-contentprovider-gettype-to-get-mime-type potrebbe esserti d'aiuto. – boiledwater

risposta

33

getType(Uri uri) sarà solitamente essere chiamato solo dopo una chiamata a ContentResolver#getType(Uri uri). Viene utilizzato dalle applicazioni (altre applicazioni di terze parti, se il tuo ContentProvider è stato esportato o il tuo) per recuperare il tipo MIME dell'URL contenuto specificato. Se la tua app non riguarda il tipo MIME dei dati, è perfettamente sufficiente avere il metodo return null.

+0

Ok. Ad esempio ... a seconda del tipo di dati dell'Uri, se vuoi fare una cosa specifica con i dati recuperati come aprire un browser o una mail. Penso che questo sia il probabile caso d'uso. Grazie!!! –

+1

Non implementare getType (Uri) è pigro al meglio. ** Può ** essere ok solo se sei l'unico cliente del tuo provider. Altrimenti, stai facendo delle supposizioni sull'uso di altre persone. – spaaarky21

+2

In realtà invece di restituire NULL è meglio scrivere qualcosa come: ** lanciare una nuova UnsupportedOperationException ("getType non è implementato"); ** – zkvarz

3

Questo metodo ContentProvider di getType() viene utilizzato principalmente quando si consente a ContentProvider di interagire con altre applicazioni di terze parti. Questo tipo MIME viene utilizzato dal sistema Android per trovare le applicazioni in grado di gestirlo.

Problemi correlati