• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

关于Android下DelphiXE7获取通讯录的问题

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

在网上感到一篇高人写的代码XE6下获取通讯录的,但是弄到XE7不能用了,原因是TJavaObjectArray变成泛型了,弄了半天没有搞懂TJavaObjectArray怎么使用,老是出错,不过研究了下Androidapi.JNI.Provider下的源代码,发现操作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.Create(1);
////ShowMessage(IntToStr(projection.Length));
//ShowMessage(JStringToString(TJContacts_PeopleColumns.JavaClass.DISPLAY_NAME));
//Exit ;
//
////projection.Items[0] := TJContacts_PeopleColumns.JavaClass.DISPLAY_NAME;
//Exit ;
//selection := JStringToString(TJContacts_PeopleColumns.JavaClass.DISPLAY_NAME)+' LIKE "%' + AName + '%"';
//end;
//
// Exit ;
selection := JStringToString(TJContacts_PeopleColumns.JavaClass.DISPLAY_NAME)+' LIKE "%' + AName + '%"';
//select projection from 联系人数据库 where selection
cursorContactsPhone := SharedActivity.getContentResolver.query
(TJCommonDataKinds_Phone.JavaClass.CONTENT_URI,
nil{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 TForm1.btn1Click(Sender: TObject);
var
s: TStrings;
begin
s := TStringList.Create;
QueryContact('', s); //查询姓王的人
ShowMessage(s.Text);
s.Free;
end;

另外发现:

function update(uri: Jnet_Uri; values: JContentValues; where: JString; selectionArgs: TJavaObjectArray<JString>): Integer; cdecl; //修改数据库记录

function delete(url: Jnet_Uri; where: JString; selectionArgs: TJavaObjectArray<JString>): Integer; cdecl;//删除数据库记录

这样是不是就可以对联系人,短信,电话记录等随意修改那? 待验证.........


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
matlab 纹理映射发布时间:2022-07-18
下一篇:
MATLAB读取txt文件并将数值转换为矩阵形式发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap