Я создаю 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 и его переноса. Внешний CP не может обернуть его снова, поэтому у меня здесь проблема. Когда я проверил класс возвращаемого курсора, я получил CursorWrapperInner.
Есть ли способ развернуть курсор (из этого CWI в обычный Cursor) во внешнем CP (но не путем передачи всех данных в MatrixCursor в цикле - это слишком много времени).