Sto creando ContentProvider che è un proxy di un altro ContentProvider (per problemi di sicurezza e per dare accesso a parte delle funzionalità dell'app completa).Cursor Wrapping/Unwrapping in 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;
}
}
Dopo aver chiamato CP interna dal mio CP ho recive eccezione imprevista:
java.lang.UnsupportedOperationException: Only CrossProcessCursor cursors are supported across process for now
L'eccezione riguarda l'avvolgimento del cursore dal CP e trasferirlo avvolto, esterno CP non può avvolgerlo di nuovo quindi ho un problema qui. Quando ho controllato la classe del cursore restituito, ho ricevuto CursorWrapperInner. C'è un modo per scartare il cursore (da questo CWI al Cursore normale) nel mio CP esterno (ma non trasferendo tutti i dati su MatrixCursor in loop - è troppo dispendioso in termini di tempo).