2012-09-06 17 views
19

印刷されないgetType()メソッドにログインしました。私はメモ帳のサンプルコードを使用しています。 Java docコメントの1行目について説明してください。 getType()からnullを返すこともうまくいきます。 getType()メソッドの目的は何ですか?Android ContentProvider getType()がいつ、なぜ呼び出されたか

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

この質問が注目されなかった理由は、「アンドロイド」でタグ付けするのを忘れたからです。 :) –

+0

http://stackoverflow.com/questions/5351669/why-use-contentprovider-gettype-to-get-mime-typeが助けになるかもしれません。 – boiledwater

答えて

33

getType(Uri uri)通常のみContentResolver#getType(Uri uri)への呼び出しの後に呼び出されます。これは、指定されたコンテンツURLのMIMEタイプを取得するために、アプリケーション(他のサードパーティアプリケーション、ContentProviderがエクスポートされている場合、または独自の場合)によって使用されます。あなたのアプリがデータのMIMEタイプに関係していない場合は、単にreturn nullメソッドを持つだけでいいです。

+0

Uriのデータ型に応じて、ブラウザーやメールを開くなど、検索されたデータで特定のことを実行したい場合私はこれが可能なユースケースだと思う。ありがとう!!! –

+1

getType(Uri)を実装していないのは、最高で怠惰です。あなたがあなたのプロバイダの唯一のクライアントである場合にのみ** **大丈夫かもしれません。それ以外の場合は、他の人の使い方を前提としています。 – spaaarky21

+2

実際にはNULLを返す代わりに、 ** throw UnsupportedOperationException( "getType is not implemented"); ** – zkvarz

3

このContentProvidergetType()メソッドは、ContentProviderが他のサードパーティのアプリケーションとやりとりできるようにする場合に使用されます。 このMIMEタイプは、Androidシステムがどのアプリケーションがそれを処理できるかを見つけるために使用されます。

関連する問題