Android实例-读取设备联系人(XE8+小米2)

相关资料:

http://www.colabug.com/thread-1071065-1-1.html

结果:

1.将权限打开Read contacts设置为True,不然报图一的错误。

2.搜索空没有问题,但搜索名字时报错了,占时没跟踪,哪位大神了解的M我,多谢了。

实例代码:

 1 unit Unit1;
 2
 3 interface
 4
 5 uses
 6   System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
 7   FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.ScrollBox,
 8   FMX.Memo, FMX.StdCtrls, FMX.Controls.Presentation, FMX.Edit, FMX.Layouts;
 9
10 type
11   TForm1 = class(TForm)
12     Button1: TButton;
13     Label1: TLabel;
14     Memo1: TMemo;
15     Layout1: TLayout;
16     Label2: TLabel;
17     Edit1: TEdit;
18     procedure Button1Click(Sender: TObject);
19   private
20     { Private declarations }
21   public
22     { Public declarations }
23   end;
24
25 var
26   Form1: TForm1;
27
28 implementation
29 uses
30  FMX.Helpers.Android, //需要引入
31  Androidapi.JNI.JavaTypes,//需要引入
32  Androidapi.JNI.GraphicsContentViewText,//需要引入
33  FMX.Platform.Android,//需要引入
34  Androidapi.JNIBridge,//需要引入
35  Androidapi.JNI.Provider,//需要引入
36  Androidapi.Helpers;//需要引入
37
38 {$R *.fmx}
39 {$R *.NmXhdpiPh.fmx ANDROID}
40 //定义一个查询方法
41 procedure QueryContact(AName: string; AList: TStrings);
42 var
43   cursorContactsPhone: JCursor;
44   selection: string;
45   oprojection: TJavaObjectArray<JString>;
46   oselectionArgs: TJavaObjectArray<JString>;
47   FieldIndex: Integer;
48 begin
49   if AList <> nil then
50   AList.Clear;
51   oprojection := nil;
52   oselectionArgs := nil;
53   if AName.Length > 0 then
54   begin
55     oprojection := TJavaObjectArray<JString>.Create(1);
56     oselectionArgs := TJavaObjectArray<JString>.Create(1);
57     oprojection.Items[0] := TJContacts_PeopleColumns.JavaClass.DISPLAY_NAME;
58     selection := JStringToString(TJContacts_PeopleColumns.JavaClass.DISPLAY_NAME)+‘ LIKE “%‘ + AName + ‘%”‘;
59   end;
60   //select projection from 联系人数据库 where selection
61   cursorContactsPhone := SharedActivity.getContentResolver.query
62   (TJCommonDataKinds_Phone.JavaClass.CONTENT_URI,
63   oprojection, {要查询的字段名,nil的全部}
64   StringToJString(selection),{Where条件}
65   oselectionArgs, { 这里是Where语句的条件参数们,我上面图方便,写死在Where条件中了,没使用参数 }
66   StringToJString(‘‘));
67
68   if AList <> nil then
69   while (cursorContactsPhone.moveToNext) do
70   begin
71     //获取字段的ColumnIndex
72     FieldIndex := cursorContactsPhone.getColumnIndex
73     (TJContacts_PeopleColumns.JavaClass.DISPLAY_NAME);
74     //读字段内容
75     AList.Add(JStringToString(cursorContactsPhone.getString(FieldIndex)));
76   end;
77   cursorContactsPhone.close;
78 end;
79
80 //调用查询方法
81 procedure TForm1.Button1Click(Sender: TObject);
82 var
83   s: TStrings;
84 begin
85   s := TStringList.Create;
86   QueryContact(Edit1.Text, s); //查询姓王的人
87   Memo1.Text := s.Text;
88   s.Free;
89 end;
90
91 end.
时间: 2024-08-29 13:18:50

Android实例-读取设备联系人(XE8+小米2)的相关文章

Android实例-OrientationSensor方向传感器(XE8+小米2)

相关资料: Heading的值不刷新:http://www.cnblogs.com/onechen/p/4497282.html 结果: 1.用XE8的话,会有个问题,就是Heading的值不刷新,一直是0.不过网上有修改方法,此文章也收录了一下.在本文中搜索“Heading的值不刷新begin”可以查看修改了什么. 实例代码: 1 unit Unit1; 2 3 interface 4 5 uses 6 System.SysUtils, System.Types, System.UITypes

Android实例-设置消息提醒(XE8+小米2)

结果: 1.二个按钮可以新建消息提醒,最小化也是新建消息提醒. 2.程序必须最小化后才能点击消息提醒Label2才会有反映. 实例代码: 1 unit Unit1; 2 3 interface 4 5 uses 6 System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, 7 FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialog

Android实例-闪光灯的控制(XE8+小米2)

1 unit Unit1; 2 3 interface 4 5 uses 6 System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, 7 FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Media, 8 FMX.Controls.Presentation, FMX.StdCtrls; 9 10 type 11

Android实例-红外线操作(XE10.2+小米5)

问题现象:在老外网站上找到的,生成的APP,运行后,取服务就报错.不知哪位大神可以帮助看一下代码出错在哪里呀.跪求! 1 unit Unit1; 2 3 interface 4 5 uses 6 System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, 7 FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, 8 FMX.C

Android基于PinnedSectionListView实现联系人通讯录

 <Android基于PinnedSectionListView实现联系人通讯录> 我在之前的文章中写过文章,介绍过PinnedSectionListView(文章地址链接: http://blog.csdn.net/zhangphil/article/details/47144125 )[文1],也有一篇文章是关于Android通讯录联系人操作的基础知识(文章地址链接: http://blog.csdn.net/zhangphil/article/details/47250747 )[文

Android实例-实现扫描二维码并生成二维码(XE8+小米5)

相关资料: 第三方资料太大没法写在博文上,请下载CSDN的程序包. 程序包下载: 过几天,刚上传的包,都没有办法显示. 注意事项: 如果只加了Lib,然没有改AndroidManifest.xml,App在呼叫BarCode时会ANR没反应.开始可能没有官方的classes.dex,但如果发现编译出错后,请再检查一下.TMessageManager须加System.Messaging单元. 使用DelphiXE7加入JavaLibrary后,呼叫Zxing相机1.新建一个DelphiXE工程,双

Android实例-手机安全卫士(二十七)—读取联系人号码

一.目标 1.将“二十六”介绍的读取联系人的方法移植到项目中: 2.选取读取到的联系人条目,将其号码自动填入文本框中(通过Intent方式在Activity之间传递数据). 二.代码实现. 1.将读取联系人方法移植到项目中. ①.在主程序包(mobilesafe)下新建选择联系人类(SelectContactActivity),并在布局文件夹中(layout)新建”选择联系人“的布局文件(activity_select_contact.xml).布局文件各联系人信息采用ListView组件显示.

Android实例-Delphi开发蓝牙官方实例解析(XE10+小米2+小米5)

Android实例-Delphi开发蓝牙官方实例解析(XE10+小米2+小米5) 相关资料:1.http://blog.csdn.net/laorenshen/article/details/411498032.http://www.cnblogs.com/findumars/p/5149128.html 一.理清概念1.蓝牙设备:是指代有蓝牙通信的手机.电脑.平板.打印机.耳机等.2.设备名称:是指设备打开蓝牙功能后,在其他设备中显示的名字,如图1用的A.B.C等.3.蓝牙关态:如果A手机没有

android: 通过内容提供器读取系统联系人

读取系统联系人 由于我们之前一直使用的都是模拟器,电话簿里面并没有联系人存在,所以现在需要自 己手动添加几个,以便稍后进行读取.打开电话簿程序,界面如图 7.1 所示. 图   7.1 可以看到,目前电话簿里是没有任何联系人的,我们可以通过点击 Create a new contact按钮来对联系人进行创建.这里就先创建两个联系人吧,分别填入他们的姓名和手机号,如 图 7.2 所示. 图   7.2 这样准备工作就做好了,现在新建一个 ContactsTest 项目,让我们开始动手吧. 首先还是