mono for Android截获短信

因为项目要求,需要在安卓系统上实现短信截获的功能,用java实现的话网上一大堆,但不喜欢

java语言的风格,并且我主方向是c#,于是就用c#完成,网上找到了mono for Android,经过很多

的组件安装后能用了,接下来马上实现需求。


搞Android开发的人都知道有两种方式实现短信截获,

1、在manifest文件中注册

2、在程序开始时用代码注册

对比优缺点,发现第一种方法适合,于是就照第一种方法写代码,其实也就是复制文件中的代码,

但是很遗憾,复制过去短信收到后程序崩溃,

<receiver android:name=".smsReceive">
<intent-filter android:priority="1000">
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>

当然需要这个
<uses-permission android:name="android.permission.RECEIVE_SMS"/>

如上代码我觉得不行的主要原因是<receiver android:name=".smsReceive">里面的.smsReceive

不清楚是一种什么样的关系,毕竟我只是涉猎一点。改了很多都不行。于是在网上搜索,找了

很久。。。。。


这时我发现国内研究技术真是比较欠缺,博文也是引用过去引用过来的,有点气愤,于是到国外

相关技术论坛上找资料,如我所愿,找到了,发上地址


http://forums.xamarin.com/discussion/comment/24420/#Comment_24420


这里面就有我想要的东西。

国内的也有一份资料,还有一本此技术的书籍,但是都没有说如何截获短信,都是说怎么发送

短信,悲催呀,是自己不会吗?????


回归正题,找到的主要代码是


    [BroadcastReceiver(Enabled = true, Label = "SMS Receiver")]
    [IntentFilter(new string[] { "android.provider.Telephony.SMS_RECEIVED" }, Priority = (int)IntentFilterPriority.HighPriority)]
    public class SMSReceiver : Android.Content.BroadcastReceiver
    {        
        public override void OnReceive(Context context, Intent intent)
        {
            InvokeAbortBroadcast();

}

    }


不过这里没用manifest文件注册,还没验证是否效果相同。


说一下需要注意的地方,如果满足你想要的条件而不再分发广播到其他地方就要调用

InvokeAbortBroadcast();不是java中的abortBroadcast();这里面没有这个。还有可能

是我安卓模拟器配置问题,这个不能进行调试。大家都知道安卓系统的运行机制,程

序卡住了会提示关闭或者继续等待,然后InvokeAbortBroadcast();就不起作用了,

所以想看部分变量的信息就需要用通知栏,吐丝等方式,设置断点不能很好的达到效

果。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值