別の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を受け取りました。
外側のCPで(このCWIから通常のカーソルに)カーソルをアンラップする方法はありますか(ただし、ループ内ですべてのデータをMatrixCursorに転送するのではなく、時間がかかりすぎます)。