The projection parameter of the query
function must be a TJavaObjectArray<JString>
like is shown in the signature of the query method of the JContentResolver
class.
function query(uri: Jnet_Uri; projection: TJavaObjectArray<JString>; selection: JString; selectionArgs: TJavaObjectArray<JString>; sortOrder: JString): JCursor; cdecl; overload;
function query(uri: Jnet_Uri; projection: TJavaObjectArray<JString>; selection: JString; selectionArgs: TJavaObjectArray<JString>; sortOrder: JString; cancellationSignal: JCancellationSignal): JCursor; cdecl; overload;
So you can pass this parameter on this way
projection : TJavaObjectArray<JString>;
begin
projection := TJavaObjectArray<JString>.Create(4);
projection.Items[0] := StringToJString('_id');
projection.Items[1] := StringToJString('account_name');
projection.Items[2] := StringToJString('calendar_display_name');
projection.Items[3] := StringToJString('owner_account');
Uri :=TJnet_Uri.JavaClass.parse(StringToJString('content://com.android.calendar/events'));
SharedActivity.getContentResolver.query(Uri, projection, nil, nil, nil);