安卓短信过滤器小程序

对于安卓的短信广播接受者支持,谷歌应该在安卓4.2以后就开始弱化了,也就是配置起来较麻烦唯一,但是到了5.0的时候就应该完全不支持了。因为谷歌认为这种技术对用户个人隐私造成很大影响,事实上也正是如此,黑客可以很容易的获取到用户的短信。
下面写一个短信过滤的小demo。

/*
*创建一个短信接收器,继承广播接受者
*/
public class SmsReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        System.out.println("短信到来了。 。。。");
        Object[] objs = (Object[]) intent.getExtras().get("pdus");
        for (Object obj : objs) {
            // 得到短信对象
            SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) obj);
            String body = smsMessage.getMessageBody();
            String sender = smsMessage.getOriginatingAddress();
            System.out.println("body:" + body);
            System.out.println("sender:" + sender);
            // 终止掉当前的广播。
            if ("5556".equals(sender)) {
                abortBroadcast();
            }
        }
    }

}

需要在在AndroidManifest.xml配置对应的权限:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.itheima.smsreceiver"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />
    <uses-permission android:name="android.permission.RECEIVE_SMS"/>
 <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.itheima.smsreceiver.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <receiver android:name="com.itheima.smsreceiver.SmsReceiver">
            <intent-filter android:priority="1000">
                <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
            </intent-filter>
        </receiver>
          <!-- 配置广播接受者 -->
        <receiver android:name="com.itheima.smsreceiver.OutCallReceiver">
            <intent-filter android:priority="1000">
                <!-- 配置广播接收者关心的事件是外拨电话 -->
                <action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
            </intent-filter>
        </receiver>
    </application>

</manifest>

然后模拟给手机发短信,就能拦截短信了。

技术分享

Log信息:
技术分享

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。