双模(CDMA/GSM)手机实现短信监听
来源:互联网 发布:app源码 编辑:程序博客网 时间:2024/05/07 02:10
一、问题分析:
最近在做一个通过短信远程启动应用的功能,要用到短信监听,代码如下:
实际应用时发现双模手机对接收到的短信处理时总是在SmsMessage.createFromPdu的地方出现异常,异常信息:
java.lang.OutOfMemoryError: array size too large
at com.android.internal.telephony.cdma.SmsMessage.parsePdu(SmsMessage.java:658)
at com.android.internal.telephony.cdma.SmsMessage.createFromPdu(SmsMessage.java:116)
at android.telephony.SmsMessage.createFromPdu(SmsMessage.java:162)
at com.android.internal.telephony.cdma.SmsMessage.parsePdu(SmsMessage.java:658)
at com.android.internal.telephony.cdma.SmsMessage.createFromPdu(SmsMessage.java:116)
at android.telephony.SmsMessage.createFromPdu(SmsMessage.java:162)
而在android的源码中可以看到createFromPdu方法:
如果是双模手机,调用此方法时会产生错误,问题就在于源码的TelephonyManager.getDefault().getPhoneType();该方法的返回值没有对应的双模手机的类型,而原生的android系统是不支持双模手机的。
二、解决办法:
我们可以采用广播接收者和内容观察者相结合的方式,直接读取手机的短信数据库,这样就避免了错误的产生,废话就不多说了,直接上代码:
最后别忘了在AndroidManifest.xml中添加相应的权限,
还有别忘了注册广播接收者:
这样就能适应所有的android手机了,无论是双模还是单模都没问题,问题解决了。
- 双模(CDMA/GSM)手机实现短信监听
- 双模(CDMA/GSM)手机实现短信监听
- 双模(CDMA/GSM)手机实现短信监听
- 双模(CDMA/GSM)手机实现短信监听
- 双模(CDMA/GSM)手机实现短信监听
- 关于GSM/CDMA双模手机
- GSM/CDMA双模手机详解-转
- 手机上的CDMA,GPRS,GSM
- 手机的网络类型?GPRS,GSM ,CDMA
- android 获取手机GSM/CDMA信号信息
- GSM手机、CDMA手机、3G手机、4G手机
- cdma & gsm
- CDMA手机和GSM手机辐射比较1
- CDMA手机和GSM手机辐射比较2
- 《Online学习》Android实现短信监听,监听某个手机。
- 手机制式GSM CDMA和3G简介和比较(zt)
- 手机制式GSM CDMA和3G简介和比较
- [转]android 获取手机GSM/CDMA信号信息
- poj 1410 || UVA 191 Intersection
- 开漏与推挽
- chm文件打不开的解决办法
- SQL分页语句
- Custom Splitter Window using MFC class CSplitterWnd
- 双模(CDMA/GSM)手机实现短信监听
- 进程和线程
- js实现朝一个方向不间断的图片滚动,这是不能实现的(即最后一张图片跑完后紧接着进行第一张图片)
- 对照Startup.s学习ARM汇编指令(转..)
- DynamicLayout-VC 6.0对话框动态布局解决方案
- 第一章 客户/服务器网络介绍
- wget
- STL理解
- SMS 发送流程