1. 在 AndroidManifest.xml 中注册一个广播接收器,优先级要大于系统彩信优先级,如 1000
<!-- MMSReceiver -->
<receiver
android:name=".receiver.MMSReceiver">
<intent-filter android:priority="10000">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
<intent-filter android:priority="10000">
<action
android:name="android.provider.Telephony.WAP_PUSH_RECEIVED" />
<data
android:mimeType="application/vnd.wap.mms-message" />
</intent-filter>
</receiver>
当然也可以在代码中使用 registerBroadcase() 方法,两种方法的差异性就不扯淡了
android注册广播的两种方式区别
2. 在 AndroidManifest.xml 中添加相应的权限(如果需要读取彩信内容的话,还需要添加相应的网络权限)
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.RECEIVE_MMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.BROADCAST_WAP_PUSH" />
<uses-permission android:name="android.permission.RECEIVE_WAP_PUSH" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.VIBRATE"/>
3. 定义自己的广播接收器处理类MMSReceiver,这一步是最关键的,也是最不好做的,所有关于接收彩信、拦截彩信都是在这里面处理的。首先需要找到 android 系统未开放的类:
com.google.android.mms.*;,这部分源码可以在 android 系统中找到,当然,我会非常关怀地提供源码地址和下载地址:
源码地址 下载地址 ,为了方便引入工程,我把这个编译了一个 jar 包,在项目的 libs 文件中
在 MMSReceiver.java 文件中,重载 onReceive() 方法:
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
String phone = null;
String action = intent.getAction();
// receive mms
if (action.equals(MMSReceiver.MMS_RECEIVERD)) {
... ...
... ...
}
}
代码就不多贴了,可以下载下来看
下载地址: 百度网盘
4. 编译成功后,最好将 MMSFilter.apk 文件 push 到手机系统里,在第 2 步 中添加的一些权限第三方应用没有权限使用的(手机需要 root , root 方法请 Google )
操作方法:
adb push MMSFiler.apk /sdcard/
adb shell
su
mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
cp /sdcard/SecureSetting.apk /system/app/SecureSetting.apk
mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system
reboot
周末愉快~~~~~~