2012-09-06 9 views
19

Ich lege eine Anmeldung in getType() -Methode wird nie gedruckt. Ich verwende den Notepad-Beispielcode. Bitte erläutern Sie die erste Zeile des Java-Dokumentationskommentars. Die Rückgabe von null aus getType() funktioniert auch gut. Was ist der Zweck der getType() -Methode?Android ContentProvider getType() aufgerufen, wenn und warum

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

Der Grund, warum diese Frage keine Aufmerksamkeit bekam, ist, weil Sie vergessen haben, es mit "android" zu markieren. :) –

+0

http://stackoverflow.com/questions/5351669/why-use-contentprovider-gettype-to-get-mime-type kann Hilfe sein u. – boiledwater

Antwort

33

getType(Uri uri) wird in der Regel erst nach einem Aufruf von ContentResolver#getType(Uri uri) aufgerufen werden. Es wird von Anwendungen verwendet (entweder von anderen Drittanbieteranwendungen, wenn Ihre ContentProvider exportiert wurde, oder von Ihren eigenen), um den MIME-Typ der angegebenen Inhalts-URL abzurufen. Wenn Ihre App sich nicht mit dem MIME-Typ der Daten befasst, ist es völlig in Ordnung, einfach die Methode return null zu verwenden.

+0

Ok. Wie ... je nach Datentyp des Uri, wenn Sie bestimmte Dinge mit den abgerufenen Daten tun möchten, wie das Öffnen eines Browsers oder Mail. Ich denke, das ist der wahrscheinliche Anwendungsfall. Vielen Dank!!! –

+1

Nicht implementieren getType (Uri) ist bestenfalls faul. Es ** kann nur in Ordnung sein, wenn Sie der einzige Kunde Ihres Anbieters sind. Andernfalls machen Sie Annahmen über die Nutzung anderer Personen. – spaaarky21

+2

Eigentlich anstatt NULL zurückzugeben, ist es besser, etwas zu schreiben wie: ** neue UnSupportedOperationException werfen ("getType ist nicht implementiert"); ** – zkvarz

3

Diese ContentProvidergetType() Methode wird meist verwendet, wenn Sie Ihre ContentProvider Interaktion mit anderen Anwendungen von Drittanbietern zulassen. Dieser MIME-Typ wird vom Android-System verwendet, um zu ermitteln, welche Anwendungen damit umgehen können.

Verwandte Themen