You need to enable JavaScript to run this app. Xamarin Forms安卓端手机联系人无法列表显示问题求助
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin Forms安卓端手机联系人无法列表显示问题求助

Xamarin.Forms安卓端联系人列表加载异常修复方案

1. 运行时权限逻辑修复

安卓6.0及以上版本仅在AndroidManifest.xml中声明权限不生效,需要在读取联系人逻辑执行前主动触发权限申请:

  • 在IContactsService实现类的联系人获取方法开头添加权限校验逻辑,可直接使用Xamarin.Essentials提供的权限API:
var readPermissionStatus = await Permissions.CheckStatusAsync<Permissions.ContactsRead>();
if (readPermissionStatus != PermissionStatus.Granted)
{
    readPermissionStatus = await Permissions.RequestAsync<Permissions.ContactsRead>();
    if (readPermissionStatus != PermissionStatus.Granted)
    {
        return new List<Contact>();
    }
}
  • 确认AndroidManifest.xml中已添加静态权限声明:
<uses-permission android:name="android.permission.READ_CONTACTS" />

2. 高版本安卓系统适配

安卓11及以上版本引入了包可见性限制,需要额外添加联系人查询声明:
在AndroidManifest.xml的manifest根节点下添加如下配置:

<queries>
    <intent>
        <action android:name="android.intent.action.VIEW" />
        <data android:mimeType="vnd.android.cursor.dir/contact" />
    </intent>
</queries>

3. 基础依赖配置校验

  • 确认MainActivity.cs的OnCreate方法中初始化顺序正确:
base.OnCreate(savedInstanceState);
// 初始化CurrentActivity插件
Plugin.CurrentActivity.CrossCurrentActivity.Current.Init(this, savedInstanceState);
// 初始化Xamarin.Essentials
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
LoadApplication(new App());
  • 重写MainActivity的OnRequestPermissionsResult方法,将权限回调传递给Essentials组件:
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
{
    Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
    base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}

4. 数据加载逻辑排查

  • 校验联系人查询Uri是否为ContactsContract.Contacts.ContentUri,查询投影参数不要遗漏Id、DisplayName、Number等必填字段。
  • 确认返回的联系人数据已正确赋值给实现了INotifyPropertyChanged的可观察集合,绑定上下文配置无误。

内容的提问来源于stack exchange,提问作者Sreejith Sree

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 13:06:06