ContentResolver错误的MIME类型

时间:2014-10-15 15:32:47

标签: android android-contentresolver

我正在Android应用中编写单元测试来测试ContentProvider。此测试扩展了ProviderTestCase2。我有以下代码:

    // Tests the MIME type for the recent_searches table URI.
    String mimeType = mMockResolver.getType(SearchEntryProvider.CONTENT_URI);
    assertEquals(SearchEntryProvider.CONTENT_TYPE, mimeType);

模拟的ContentResolver将SearchEntryProvider.CONTENT_URI的值视为: url = {android.net.Uri$StringUri@831696969096}" content://com.eazyigz.provider.RussiaMediaSearch/searches"

问题是这个assertEquals失败了,因为它期望CONTENT_TYPE为

  

vnd.android.cursor.dir

但是收到

  

vnd.android.cursor.item

对于我的生活,我无法弄清楚如何让mimeType成为 vnd.android.cursor.dir 。有人有这方面的经验吗?

谢谢, 伊戈尔

1 个答案:

答案 0 :(得分:0)

对于任何感兴趣的人,问题出在我的ContentProvider的 getType 方法的实现中。我必须像这样实现它以返回正确的 CONTENT_TYPE

@Override
public String getType(Uri uri) {
    final int match = sUriMatcher.match(uri);
    switch (match) {
        // If the pattern is for searches, returns the general content type.
        case SEARCHES:
            return CONTENT_TYPE;
        case SEARCH_ID:
            return CONTENT_ITEM_TYPE;
        default:
            throw new UnsupportedOperationException(INVALID_URI + uri);
    }
}