Xamarin.Essentials找不到UsesPermission类型报错如何修复
Xamarin Android 振动功能配置UsesPermission编译报错修复
报错原因
抛出CS0246找不到UsesPermissionAttribute的核心原因有两个:
- 代码文件未引入
UsesPermission特性所属的Android.App命名空间 - 权限声明代码放错了项目位置,写在了跨平台共享代码项目中,而该项目未引用Xamarin.Android的基础类库,无法识别Android专属的特性
修复步骤
- 确认权限声明代码的存放位置:
[assembly: UsesPermission(Android.Manifest.Permission.Vibrate)]这段代码必须放在Android端专属项目中,不能放在Xamarin.Forms的跨平台共享项目里。你可以直接把这段代码写到Android项目下的Properties/AssemblyInfo.cs文件中。 - 在存放权限声明的代码文件头部补充缺失的命名空间引用,完整代码参考如下:
// 必须补充这行引用,UsesPermission定义在该命名空间下 using Android.App; using Xamarin.Forms.Xaml; using Xamarin.Essentials; [assembly: XamlCompilation(XamlCompilationOptions.Compile)] [assembly: UsesPermission(Android.Manifest.Permission.Vibrate)] - 重新编译项目即可解决报错。
补充说明:Android端的
VIBRATE权限属于安装时自动授予的普通权限,不需要额外做运行时动态申请。配置完权限后直接调用Xamarin.Essentials提供的振动API即可生效,示例调用:// 控制设备振动500毫秒 Vibration.Vibrate(TimeSpan.FromMilliseconds(500)); // 取消当前振动 // Vibration.Cancel();
内容的提问来源于stack exchange,提问作者Benjamin Morales Perez
相关产品推荐
相关产品推荐

