【发布时间】:2011-04-27 22:50:34
【问题描述】:
我正在创建 ContentProvider,它是另一个 ContentProvider 的代理(用于安全问题并提供对完整应用程序部分功能的访问权限)。
public class GFContactsProvider extends ContactsProvider implements
DatabaseConstants {
private Context mContext;
private ContentResolver mContentResolver;
@Override
public boolean onCreate() {
mContext = getContext();
mContentResolver = mContext.getContentResolver();
}
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
Cursor result = mContentResolver.query(ContactsContract.getContactsURI(Long.parseLong(address.get(1))), null, null, null, ContactsContract.ContactColumns.SHOW_NAME);
return result;
}
}
从我的 CP 调用内部 CP 后,我收到了意外的异常:
java.lang.UnsupportedOperationException: Only CrossProcessCursor cursors are supported across process for now
这个异常涉及到 CP 对 Cursor 的包装和传输,Outer CP 不能再次包装,所以我这里有问题。当我检查返回光标的类时,我收到了 CursorWrapperInner。
有没有办法在我的外部 CP 中解开光标(从这个 CWI 到常规 Cursor)(但不是通过将所有数据循环传输到 MatrixCursor ——这太耗时了)。
【问题讨论】:
标签: android android-contentprovider android-cursor