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