Delphi读取Android设备联系人.DelphiXE6中编译通过

和某牛讨论Delphi读Android联系人.写了如下代码

uses
   FMX . Helpers . Android,
   Androidapi . JNI . JavaTypes, Androidapi . JNI . GraphicsContentViewText,
   FMX . Platform . Android, Androidapi . JNIBridge, Androidapi . JNI . Provider,
   Androidapi . Helpers;
 
procedure QueryContact(AName: string ; AList: TStrings);
var
   cursorContactsPhone: JCursor;
   selection: string ;
   projection: TJavaObjectArray<JString>;
   FieldIndex: Integer ;
begin
   if AList <> nil then
     AList . Clear;
   projection := nil ;
   if AName . Length > 0 then
   begin
     projection := TJavaObjectArray<JString>.Create( 1 );
     projection . Items[ 0 ] := TJContacts_PeopleColumns . JavaClass . DISPLAY_NAME;
     selection := JStringToString(TJContacts_PeopleColumns . JavaClass . DISPLAY_NAME)+ ' LIKE "%' + AName + '%"' ;
   end ;
 
   //select projection from 联系人数据库 where  selection
   cursorContactsPhone := SharedActivity . getContentResolver . query
     (TJCommonDataKinds_Phone . JavaClass . CONTENT_URI,
     projection {要查询的字段名,nil的全部} ,
     StringToJString(selection) {Where条件} ,
     nil { 这里是Where语句的条件参数们,我上面图方便,写死在Where条件中了,没使用参数 } , nil );
   if AList <> nil then
     while (cursorContactsPhone . moveToNext) do
     begin
       //获取字段的ColumnIndex
       FieldIndex := cursorContactsPhone . getColumnIndex
         (TJContacts_PeopleColumns . JavaClass . DISPLAY_NAME);
       //读字段内容
       AList . Add(JStringToString(cursorContactsPhone . getString(FieldIndex)));
     end ;
   cursorContactsPhone . close;
end ;
 
procedure TForm2 . Button1Click(Sender: TObject);
var
   s: TStrings;
begin
   s := TStringList . Create;
   QueryContact( '王' , s); //查询姓王的人
   ShowMessage(s . Text);
   s . Free;
end ;

我是个懒人,不想再深究了.
对了,别忘了Android有权限,加上读取联系人的权限

转自:http://www.raysoftware.cn/?p=501

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值