c# - 如何检索 xamarin 表单中的所有联系人列表
问题描述
我尝试使用插件Xamarin.Forms.Contacts
并遵循 github 链接,
https: //gist.github.com/enisn/25fd0a63a849854fb6103aa681be9963
但是,当我编译和调试时,屏幕上什么也没有显示。我也将插件添加到 Android 和 iOS 并设置了所需的权限。在GetContacts()
Debugger 的第一行死掉并且没有移动到另一行。
public ContactList()
{
InitializeComponent();
GetContacs();
}
#pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
async Task GetContacs()
{
var contacts = await Plugin.ContactService.CrossContactService.Current.GetContactListAsync();
lstContacts.BindingContext = contacts;
},
我还按照链接上的教程,https://www.xamboy.com/2019/10/10/getting-phone-contacts-in-xamarin-forms/ 在本教程中,我发现了权限功能的问题,调试器死了这里也是,在 if 条件下验证权限。
`public async Task<bool> RequestPermissionAsync()
{
contactPermissionTcs = new TaskCompletionSource<bool>();
// Verify that all required contact permissions have been granted.
if (Android.Support.V4.Content.ContextCompat.CheckSelfPermission(CrossCurrentActivity.Current.Activity, Manifest.Permission.ReadContacts) != (int)Permission.Granted
|| Android.Support.V4.Content.ContextCompat.CheckSelfPermission(CrossCurrentActivity.Current.Activity, Manifest.Permission.WriteContacts) != (int)Permission.Granted)
{
// Contacts permissions have not been granted.
RequestContactsPermissions();
}
else
{
// Contact permissions have been granted.
contactPermissionTcs.TrySetResult(true);
}
return await contactPermissionTcs.Task;
}`
这也没有奏效。
是否有任何建议或建议可以使我的任务更轻松?
解决方案
从 Xamarin.Essentials1.6.0-pre5
和后者开始,引入的新 APIGetAllAsync()
允许您获取所有联系人。
Microsoft 文档中的示例
ObservableCollection<Contact> contactsCollect = new ObservableCollection<Contact>();
try
{
// cancellationToken parameter is optional
var cancellationToken = default(CancellationToken);
var contacts = await Contacts.GetAllAsync(cancellationToken);
if (contacts == null)
return;
foreach (var contact in contacts)
contactsCollect.Add(contact);
}
catch (Exception ex)
{
// Handle exception here.
}
它在 Android、iOS 和 UWP 上受支持,正如问题中已经提到的那样,在每个平台上添加所需的权限对于此 API 工作很重要,详细信息请参阅Xamarin.Essentials: Contacts。
推荐阅读
- javascript - 如何在 React 的另一个类上调用 const?
- exception - System.Runtime.InteropServices.COMException:错误?
- javascript - Vuetify/Javascript 为什么我得到一个 ReferenceError: variable is not defined
- javascript - 如何使用 Express/Pug 动态呈现异步函数输出?
- python - IronPython.Runtime.UnboundNameException:'名称'true'未定义'
- sql - 根据行值和上一行值重置 ROW_NUMBER?
- c# - 启动进程 WMI 在另一台计算机上最大化
- oracle - Oracle Apex 交互式报表标题过滤器大小
- python - cv2.VideoCapture(0) 似乎以蜗牛的速度停止我的程序
- python - 使用 virtualenv 嵌入 python 和 pybind11