我有一个问题,Jstring下Delphi-XE5的Android应用。实际上,我试图使用以下句子访问android日历:
projection: array[1..4] of string=('_id','account_name','calendar_display_name','owner_account');
Uri :=TJnet_Uri.JavaClass.parse(StringToJString('content://com.android.calendar/events'));
managedCursor := SharedActivity.getContentResolver.query(Uri, projection, nil, nil, nil);问题是,最后一个查询必须以Jstring的形式接收投影。
我也一直在努力:
projection: array[1..4] of JString= (StringToJString('_id'),StringToJString('account_name'),StringToJString('calendar_display_name'),StringToJString('owner_account'));但是它会返回以下错误:
[DCC Error] Unit5.pas(46): E2250 There is no overloaded version of 'query' that can be called with these arguments有什么想法吗?
发布于 2014-04-04 16:35:37
query函数的投影参数必须是TJavaObjectArray<JString>类,如JContentResolver类查询方法的签名所示。
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;所以你可以用这种方式传递这个参数
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);https://stackoverflow.com/questions/22855523
复制相似问题