Xamarin.Forms读取并展示Android和iOS通讯录 - TerminalMACS客户端
本文同步更新地址:
- https://dotnet9.com/11520.html
- https://terminalmacs.com/861.html
阅读导航:
- 一、功能说明
- 二、代码实现
- 三、源码获取
- 四、参考资料
- 五、后面计划
一、功能说明
完整思维导图:https://github.com/dotnet9/TerminalMACS/blob/master/docs/TerminalMACS.xmind
![138bbf55d4077ee0d90704338812921e.png](https://i-blog.csdnimg.cn/blog_migrate/3e1a6e758d612aa38e3dde9eb2acb4e6.jpeg)
本文介绍图中右侧画红圈处的功能,即使用Xamarin.Forms获取和展示Android和iOS的通讯录信息,下面是最终效果,由于使用的是真实手机,所以联系人姓名及电话号码打码显示。
![f72e8594decd170539c82b4673283197.png](https://i-blog.csdnimg.cn/blog_migrate/9af5cdd9da351d1a2dc0373b9eff2907.jpeg)
并简单的进行了搜索功能处理,之所以说简单,是因为通讯录列表是全部读取出来了,搜索是直接从此列表进行过滤的。
下图来自:https://www.xamboy.com/2019/10/10/getting-phone-contacts-in-xamarin-forms/, 本功能是参考此文所写,所以直接引用文中的图片。
![8fb322c7b017b1678693b6a07ed6d2bf.png](https://i-blog.csdnimg.cn/blog_migrate/575f40ed5999dbc6a56dc77587c4f426.jpeg)
二、代码实现
1、共享库工程创建联系人实体类:Contacts.cs
namespace
2、共享库创建通讯录服务接口:IContactsService.cs
包括: - 一个通讯录获取请求接口:RetrieveContactsAsync - 一个读取一条通讯结果通知事件:OnContactLoaded
using
3、iOS工程中添加通讯录服务,实现IContactsService接口:
using
4、在iOS工程中的Info.plist文件添加通讯录权限使用说明
![a0833cd5533c7ba8610d9d2127ca7dc6.png](https://i-blog.csdnimg.cn/blog_migrate/c735cc04165880e6522b534b38b7fb54.jpeg)
5、在Android工程中添加读取通讯录权限配置:AndroidManifest.xml
<uses-permission
完整权限配置如下
<?xml version="1.0" encoding="utf-8"?>
6、在Android工程中添加通讯录服务,实现IContactServer接口:ContactsService.cs
using
需要添加 Plugin.CurrentActivity 和 Acr.UserDialogs 包。
7、Android工程添加权限处理判断类
Permission.Util
using
MainActivity.OnRequestPermissionResult是权限申请结果处理函数,在此函数中调用ContactsService.OnRequestPermissionsResult通知通讯录服务权限处理结果。
MainActivity.cs
using
8、创建通讯录ViewModel,并使用通讯录服务
using
9、添加通讯录页面展示通讯录数据
<?xml version="1.0" encoding="utf-8" ?>
三、源码获取
- 1.完整源码:https://github.com/dotnet9/TerminalMACS
- 2.Android客户端可成功取得通讯录数据,并可查询;
已编译的Android客户端:https://terminalmacs.com/terminalmacs-clients-app-android
- 3.iOS读取通讯录功能代码也已添加,但由于本人没有iOS测试环境,所以未验证,有条件的朋友可以测试下iOS的通讯录读取功能,如果代码不起作用,可参考本文参考的文章检查iOS代码。
四、参考资料
Getting phone contacts in Xamarin Forms:https://www.xamboy.com/2019/10/10/getting-phone-contacts-in-xamarin-forms/
参考文章末尾有源代码链接。
五、后面计划
Xamarin.Forms客户端基本信息获取,比如IMEI、IMSI、本机号码、Mac地址等。