如何在通用windows phone 10中阅读特定的SMS消息

本文关键字:消息 SMS phone windows | 更新日期: 2023-09-27 17:52:46

在我的项目中,我想阅读特定的SMS消息并删除该消息,它可能在通用windows phone 10.

是否可以在清单文件中使用聊天消息访问 ?

如何在通用windows phone 10中阅读特定的SMS消息

您可以使用聊天消息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,可以看看这个示例,这应该是一个很好的开始。