我写了一个小的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上有没有禁用此功能的东西?
是否有其他方法可以拦截我可能使用的短信?
答案 0 :(得分:1)
可能与HTC Sense有关,它可以有效地替换标准UI的大片,包括默认的SMS应用程序 - 可能是PocketOutlook通常触发消息拦截器的情况甚至没有被加载。
我已经使用MSDN的示例代码进行了测试,但这似乎不适用于与您所看到的相匹配的HD2。
答案 1 :(得分:1)
我收集的内容有两种不同的解决方法。
您构建自己的MapiRule.dll。这是一个很好的帖子怎么做。 http://minhdanh2002.blogspot.com/2010/07/intercept-incoming-sms-message-on-htc.html
如果Nathan提到的上述规则不能解决问题。其中没有我们的HTC HD mini T5555手机。您可以使用此reg hack。下面的reg会改变哪个:
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并拦截工作