Android ContentProvider getType()调用的时间和原因

时间:2012-09-06 10:00:08

标签: java android android-contentprovider

我在getType()方法中放入一个永远不会被打印的日志。我正在使用记事本示例代码。请解释Java doc评论的第1行。从getType()返回null也正常工作。 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;
}

2 个答案:

答案 0 :(得分:35)

getType(Uri uri)通常只会在调用ContentResolver#getType(Uri uri)后调用。应用程序(其他第三方应用程序,如果已导出ContentProvider或您自己的应用程序)使用它来检索给定内容URL的MIME类型。如果您的应用不关心数据的MIME类型,那么只需使用方法return null即可。

答案 1 :(得分:3)

当您允许ContentProvider与其他第三方应用程序进行交互时,此getType() ContentProvider方法主要用于此方法。 Android系统使用此MIME类型来查找哪些应用程序可以处理它。