windows mobile 短信拦截总结(二)

 二 MessageInterceptor

 

对于C#来说,可以很方便的拦截短信,而不用C++的那些api,倒是很省心,但我只是试验了一下拦截短信,可以拦截,后续操作还不知道是否方便。

 

1. 添加必要的引用:

 

using Microsoft.WindowsMobile.PocketOutlook;
using Microsoft.WindowsMobile.PocketOutlook.MessageInterception;

 

此时可能还是不能编译通过,看一下解决方案下的引用是否有Microsoft.WindowsMobile.PocketOutlookMicrosoft.WindowsMobile和Microsoft.WindowsMobile.PocketOutlook.MessageInterception,这些如果没有手工添加引用,网上查的是只需要using就可以,不过我试的不行,手工添加引用后才可以的。

 

2. 添加代码

 

        MessageInterceptor m_interceptor;

        m_interceptor = new MessageInterceptor();
        m_interceptor.MessageReceived += new MessageInterceptorEventHandler(m_onMessageReceived);

        // 这里对interceptor的MessageReceived添加一个handler,这个是个典型的observer模式,当观察者发现新短信的时候调用注册的handler。

        void m_onMessageReceived(object sender, MessageInterceptorEventArgs e)
        {

            //这个函数就是handler函数。当短信到达时就会被调用,这些函数也是我从网上找到的,写成了两个函数,简单的只需要一个函数就可以了。
            if(e.Message is SmsMessage)
            m_receiveSms(e.Message as SmsMessage);
        }

        private void m_receiveSms(SmsMessage smsMessage)
        {

            // m_sbMessages是一个StringBuilder,textBox1是一个TextBox,我用StringBuilder组合短信的各个字段,然后在TextBox中显示
            // From
            m_sbMessages.Append("From:/r/n");
            m_sbMessages.Append(String.Format("/tName: {0}/r/n", smsMessage.From.Name));
            m_sbMessages.Append(String.Format("/tAddress: {0}/r/n", smsMessage.From.Address));

            // Received
            m_sbMessages.Append("Received:/r/n");
            m_sbMessages.Append(String.Format("/t{0}/r/n", smsMessage.Received.ToString()));

            // Sent
            m_sbMessages.Append("Sent:/r/n");
            m_sbMessages.Append(String.Format("/t{0}/r/n", smsMessage.LastModified.ToString()));

            // Body
            m_sbMessages.Append("Message:/r/n");
            m_sbMessages.Append(String.Format("/t{0}/r/n", smsMessage.Body));

            // refresh
            textBox1.Text = m_sbMessages.ToString();
            textBox1.Update();

            // add a new line
            m_sbMessages.Append("/r/n");
            smsMessage.Read = true;
        }

 

 

这个方法拦截短信,我还有3个问题,1.还不知道如何不让系统提示新短信,2.设置了信息为已读,却还是显示为未读,3.如何移动短信到其他文件夹还不知道

 

这个方法还有一个过滤的类我还没有试,大概就是设置过滤的是发信人还是内容等等,然后根据规则拦截短信,而不是所有的都拦截。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值