如何在通用windows phone 10中阅读特定的SMS消息
本文关键字:消息 SMS phone windows | 更新日期: 2023-09-27 17:52:46
在我的项目中,我想阅读特定的SMS消息并删除该消息,它可能在通用windows phone 10.
是否可以在清单文件中使用聊天消息访问 ?
您可以使用聊天消息api访问您的设备的SMS消息。使用ChatMessageStore,您将能够创建/删除消息,但这可能不是您真正想要的。聊天消息api更多是为了创建像WhatsApp这样的消息应用程序而设计的。
如果你想接收的消息是一个应用程序定向的消息,你可以在它到达ChatMessageStore之前拦截它。通用windows平台正在公开一个新的(受限制的)API,以便在消息到达存储库之前使用自定义过滤规则拦截消息。你可以看看这个样品。它使用最新的SmsMessageReceivedTrigger后台任务触发器。
由于这个API是受限制的,你必须向微软请求授权才能将这样的应用程序发布到商店
下面是一个关于如何使用SmsMessageReceivedTrigger与后台任务入口点和注册的示例
public async void Run(IBackgroundTaskInstance taskInstance)
{
var smsDetails = taskInstance.TriggerDetails as SmsMessageReceivedTriggerDetails;
// consume sms
var from = smsDetails.TextMessage.From;
var body = smsDetails.TextMessage.Body;
// we acknoledege the reception of the message
smsDetails.Accept();
}
static IBackgroundTaskRegistration Register()
{
var taskNameAndEntryPoint = typeof(SmsInterceptor).FullName;
var task = BackgroundTaskRegistration.AllTasks.Values.FirstOrDefault(x => x.Name == taskNameAndEntryPoint);
if(task != null) return task;
var filterRule = new SmsFilterRule(SmsMessageType.App);
filterRule.SenderNumbers.Add("111111111");
filterRule.SenderNumbers.Add("222222222");
var filterRules = new SmsFilterRules(SmsFilterActionType.AcceptImmediately);
filterRules.Rules.Add(filterRule);
var taskBuilder = new BackgroundTaskBuilder();
taskBuilder.Name = taskNameAndEntryPoint;
taskBuilder.TaskEntryPoint = taskNameAndEntryPoint;
taskBuilder.SetTrigger(new SmsMessageReceivedTrigger(filterRules));
return taskBuilder.Register();
}
由于它使用受限制的API,您必须将以下受限制的功能添加到您的appx清单
<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
xmlns:r="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
IgnorableNamespaces="uap mp r">
<Capabilities>
<r:Capability Name="cellularMessaging" />
</Capabilities>
</Package>
您可以在这里找到完整的示例
如果您想使用ChatMessageStore API,可以看看这个示例,这应该是一个很好的开始。