调用Xamarin.Essentials RequestPermissionsAsync方法报错:无该定义
解决Xamarin.Essentials权限请求报错问题
你遇到的问题是因为调用方式不符合Xamarin.Essentials的权限API规范,Xamarin.Essentials.Permissions并没有直接接收Permission枚举参数的RequestPermissionsAsync静态方法,正确用法分两种场景:
单个通讯录读取权限请求
如果仅需请求通讯录读取权限,推荐使用泛型方法RequestAsync<T>,代码示例:
var status = await Permissions.RequestAsync<Permissions.ContactsRead>();
批量请求多个权限
如果需要同时申请多个权限(比如通讯录读写权限),才会用到RequestPermissionsAsync,此时需传入权限类型数组:
var statuses = await Permissions.RequestPermissionsAsync(new[] { Permissions.ContactsRead, Permissions.ContactsWrite }); // 通过权限类型获取对应请求状态 var readPermissionStatus = statuses[Permissions.ContactsRead];
额外配置要求
- Android端:必须在
AndroidManifest.xml中添加权限声明:<uses-permission android:name="android.permission.READ_CONTACTS" /> <!-- 若需写入通讯录,补充以下声明 --> <uses-permission android:name="android.permission.WRITE_CONTACTS" /> - iOS端:需要在
Info.plist中添加权限使用描述,否则系统会直接拒绝权限请求:<key>NSContactsUsageDescription</key> <string>需要访问您的通讯录以完成相关功能</string>
内容的提问来源于stack exchange,提问作者FedericoLovera
相关产品推荐
相关产品推荐

