如何在.NET 9 MAUI应用中设置并激活SEND_SMS权限?
.NET 9 MAUI 短信应用 SEND_SMS 权限无法激活问题解决
问题背景
使用.NET 9开发MAUI短信发送应用,已在Android清单中添加SEND_SMS权限并编译签名APK,但手机端权限显示“wipeout”,尝试激活时跳转教程页面但流程无效。
可能原因及解决方案
1. 仅静态声明权限不足以触发授权流程
SEND_SMS属于Android危险权限,Android 6.0(API 23)及以上版本,除了在清单中静态声明,还需要动态申请权限。
在MAUI中,使用内置权限API处理:
// 在需要发送短信的页面或ViewModel中调用 var status = await Permissions.RequestAsync<Permissions.Sms>(); if (status != PermissionStatus.Granted) { // 处理权限未授予的情况,比如提示用户手动授权 }
2. 检查清单权限声明的完整性
确保AndroidManifest.xml中的权限声明格式正确,可补充protectionLevel明确权限类型(部分系统可能需要显式声明):
<uses-permission android:name="android.permission.SEND_SMS" android:protectionLevel="dangerous" />
若应用需要读取短信状态,可补充关联权限:
<uses-permission android:name="android.permission.READ_SMS" />
3. 验证APK签名有效性
签名错误可能导致系统无法正确识别应用权限:
- 确认MAUI项目csproj中已正确配置签名参数:
<PropertyGroup Condition="'$(Configuration)' == 'Release'"> <AndroidSigningKeyStore>your-keystore-path.keystore</AndroidSigningKeyStore> <AndroidSigningStorePassword>your-store-password</AndroidSigningStorePassword> <AndroidSigningKeyAlias>your-key-alias</AndroidSigningKeyAlias> <AndroidSigningKeyPassword>your-key-password</AndroidSigningKeyPassword> </PropertyGroup> - 重新编译签名APK,确保签名过程无报错。
4. 处理系统授权跳转异常
若系统跳转教程无效,可尝试:
- 手动进入手机设置→应用管理→你的应用→权限,找到短信权限并手动开启。
- 检查是否有第三方安全软件拦截权限申请,临时关闭后重试。
5. 确认项目SDK版本配置
确保项目的minSdkVersion不低于SEND_SMS要求的最低版本(API 19),在AndroidManifest.xml或csproj中配置:
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="34" />
内容的提问来源于stack exchange,提问作者Neowolf
相关产品推荐
相关产品推荐

