在HTC HD2上不调用消息拦截器

时间:2010-01-26 10:01:05

标签: windows-mobile sms

我写了一个小的Windows移动应用程序,拦截传入的短信并对它们进行一些处理。

在Windows市场上销售了大约30个这样的应用后,我发现了一个问题。问题(到目前为止)只发生在一台设备上:
HTC HD2

问题很简单:我将程序附加到名为MessageInterceptor的系统服务,如下所示:

private void RegisterInterceptor()
{
 _msgInterceptor = new MessageInterceptor(InterceptionAction.Notify, true);  
 _msgInterceptor.MessageReceived += new MessageInterceptorEventHandler (_msgInterceptor_MessageReceived);
 String appPath = Assembly.GetExecutingAssembly().GetName().CodeBase;
 _msgInterceptor.EnableApplicationLauncher(_appID, appPath, "Program started by System");
}

void _msgInterceptor_MessageReceived(object sender, MessageInterceptorEventArgs e)
{
 SmsMessage sm = e.Message as SmsMessage;
 if (sm != null)
  labelMsgReceived.Text = "SMS rcvd \"" + sm.Body + "\"";
 else
  labelMsgReceived.Text = "Unknown message rcvd";
}

这通常可以很好地工作。就在这些HTC HD2上,这个事件永远不会被称为。

我没有HTC HD2,所以我不能自己测试设备。我听说有传言说确实有一些HD2可以按预期工作,但到目前为止我还没有得到确认。

我正在寻找一种解决方法 HD2上有没有禁用此功能的东西?
是否有其他方法可以拦截我可能使用的短信?

3 个答案:

答案 0 :(得分:1)

可能与HTC Sense有关,它可以有效地替换标准UI的大片,包括默认的SMS应用程序 - 可能是PocketOutlook通常触发消息拦截器的情况甚至没有被加载。

我已经使用MSDN的示例代码进行了测试,但这似乎不适用于与您所看到的相匹配的HD2。

答案 1 :(得分:1)

我收集的内容有两种不同的解决方法。

  1. 您构建自己的MapiRule.dll。这是一个很好的帖子怎么做。 http://minhdanh2002.blogspot.com/2010/07/intercept-incoming-sms-message-on-htc.html

  2. 如果Nathan提到的上述规则不能解决问题。其中没有我们的HTC HD mini T5555手机。您可以使用此reg hack。下面的reg会改变哪个:

  3. HKLM \ services \ MSG并将“MessagingService.dll”重命名为其他任何内容。然后转到HKLM \ system \ inbox \ externalaccounts和renama短信到别的东西。在此之后,您将不得不重新启动,以使其运行。

答案 2 :(得分:0)

某些手机将此或类似的注册表项设置为1,更改为0将允许拦截器工作

HKEY_LOCAL_MACHINE \ SOFTWARE \微软\收件箱\ SVC \ SMS \规则:{1000BC1C-F4A3-4210-B197-4AEBF2CEE6F5}

默认情况下设置为1拦截不起作用 设置为0并拦截工作