BulkCursorNativepublic abstract class BulkCursorNative extends android.os.Binder implements IBulkCursorNative implementation of the bulk cursor. This is only for use in implementing
IPC, application code should use the Cursor interface.
{@hide} |
Constructors Summary |
---|
public BulkCursorNative()
attachInterface(this, descriptor);
|
Methods Summary |
---|
public android.os.IBinder | asBinder()
return this;
| public static IBulkCursor | asInterface(android.os.IBinder obj)Cast a Binder object into a content resolver interface, generating
a proxy if needed.
if (obj == null) {
return null;
}
IBulkCursor in = (IBulkCursor)obj.queryLocalInterface(descriptor);
if (in != null) {
return in;
}
return new BulkCursorProxy(obj);
| public boolean | onTransact(int code, android.os.Parcel data, android.os.Parcel reply, int flags)
try {
switch (code) {
case GET_CURSOR_WINDOW_TRANSACTION: {
data.enforceInterface(IBulkCursor.descriptor);
int startPos = data.readInt();
CursorWindow window = getWindow(startPos);
if (window == null) {
reply.writeInt(0);
return true;
}
reply.writeNoException();
reply.writeInt(1);
window.writeToParcel(reply, 0);
return true;
}
case COUNT_TRANSACTION: {
data.enforceInterface(IBulkCursor.descriptor);
int count = count();
reply.writeNoException();
reply.writeInt(count);
return true;
}
case GET_COLUMN_NAMES_TRANSACTION: {
data.enforceInterface(IBulkCursor.descriptor);
String[] columnNames = getColumnNames();
reply.writeNoException();
reply.writeInt(columnNames.length);
int length = columnNames.length;
for (int i = 0; i < length; i++) {
reply.writeString(columnNames[i]);
}
return true;
}
case DEACTIVATE_TRANSACTION: {
data.enforceInterface(IBulkCursor.descriptor);
deactivate();
reply.writeNoException();
return true;
}
case CLOSE_TRANSACTION: {
data.enforceInterface(IBulkCursor.descriptor);
close();
reply.writeNoException();
return true;
}
case REQUERY_TRANSACTION: {
data.enforceInterface(IBulkCursor.descriptor);
IContentObserver observer =
IContentObserver.Stub.asInterface(data.readStrongBinder());
CursorWindow window = CursorWindow.CREATOR.createFromParcel(data);
int count = requery(observer, window);
reply.writeNoException();
reply.writeInt(count);
reply.writeBundle(getExtras());
return true;
}
case UPDATE_ROWS_TRANSACTION: {
data.enforceInterface(IBulkCursor.descriptor);
// TODO - what ClassLoader should be passed to readHashMap?
// TODO - switch to Bundle
HashMap<Long, Map<String, Object>> values = data.readHashMap(null);
boolean result = updateRows(values);
reply.writeNoException();
reply.writeInt((result == true ? 1 : 0));
return true;
}
case DELETE_ROW_TRANSACTION: {
data.enforceInterface(IBulkCursor.descriptor);
int position = data.readInt();
boolean result = deleteRow(position);
reply.writeNoException();
reply.writeInt((result == true ? 1 : 0));
return true;
}
case ON_MOVE_TRANSACTION: {
data.enforceInterface(IBulkCursor.descriptor);
int position = data.readInt();
onMove(position);
reply.writeNoException();
return true;
}
case WANTS_ON_MOVE_TRANSACTION: {
data.enforceInterface(IBulkCursor.descriptor);
boolean result = getWantsAllOnMoveCalls();
reply.writeNoException();
reply.writeInt(result ? 1 : 0);
return true;
}
case GET_EXTRAS_TRANSACTION: {
data.enforceInterface(IBulkCursor.descriptor);
Bundle extras = getExtras();
reply.writeNoException();
reply.writeBundle(extras);
return true;
}
case RESPOND_TRANSACTION: {
data.enforceInterface(IBulkCursor.descriptor);
Bundle extras = data.readBundle();
Bundle returnExtras = respond(extras);
reply.writeNoException();
reply.writeBundle(returnExtras);
return true;
}
}
} catch (Exception e) {
DatabaseUtils.writeExceptionToParcel(reply, e);
return true;
}
return super.onTransact(code, data, reply, flags);
|
|