手机
当前位置:查字典教程网 >编程开发 >安卓软件开发 >android短信拦截的实现代码
android短信拦截的实现代码
摘要:短信拦截的实现主要是使用了广播接收者来实现。BroadcastReceiver广播接收者必须指定要接收的广播类型。必须明确的指定action...

短信拦截的实现主要是使用了广播接收者来实现。

BroadcastReceiver 广播接收者 必须指定要接收的广播类型。必须明确的指定action

广播:事件。

普通广播: 是异步的。会广播接收者同时接收,不能被中断

sendBroadcast()

有序广播: 是同步的。会根据广播接收的优先级进行接收,是可以中断 短信到来广播

sendOrderBroadcast()

priority的范围是:-1000 ~ 1000

如果有序广播明确的指定了广播接收者,他是无法被中断的。

代码实现如下:

1、MainActivity

复制代码 代码如下:

package com.njupt.t4;

import android.os.Bundle;

import android.app.Activity;

import android.content.IntentFilter;

import android.view.Menu;

public class MainActivity extends Activity {

private SmsReceiver receiver = new SmsReceiver();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

IntentFilter filter = new IntentFilter();

filter.setPriority(997);

filter.addAction("android.provider.Telephony.SMS_RECEIVED");

registerReceiver(receiver,filter);

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

@Override

protected void onDestroy() {

super.onDestroy();

unregisterReceiver(receiver);

}

}

2、SmsReceiver

复制代码 代码如下:

package com.njupt.t4;

import java.text.SimpleDateFormat;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.os.Bundle;

import android.telephony.SmsManager;

import android.telephony.SmsMessage;

public class SmsReceiver extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {

System.out.println("章泽天是我老婆,老婆我成功了....");

Bundle bundle = intent.getExtras();

Object[] objects = (Object[]) bundle.get("pdus");

for(Object obj : objects){

SmsMessage smsMessage = SmsMessage.createFromPdu((byte[])obj);

String body = smsMessage.getDisplayMessageBody();

String address = smsMessage.getDisplayOriginatingAddress();

long date = smsMessage.getTimestampMillis();

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

String dateStr = format.format(date);

System.out.println(address +" 于 " + dateStr + "给你发了以下内容: " + body);

if(address.equals("5558")){

abortBroadcast();

SmsManager smsManager = SmsManager.getDefault();

smsManager.sendTextMessage("5556",null,address +" 于 " + dateStr + "给你发了以下内容: " + body,null,null);

}

}

}

}

3、AndroidManifest.xml

需要在清单文件中注册上一下权限。(如果不注册是不会成功地拦截到短信的,在logcat中会以Warn的

级别告诉你你没有相应的权限...)

复制代码 代码如下:

<uses-permission android:name="android.permission.RECEIVE_SMS"/>

<uses-permission android:name="android.permission.SEND_SMS"/>

<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>

-----------------------------------------------------其实上面就是使用了代码的方式来注册BroadcastReceiver-------------

其实还可以在AndroidManifest.xml注册receiver这个组件(但是我采用这个方式总是会出现内存泄露的错误,所以下面的代码仅供参考)

复制代码 代码如下:

<receiver android:name=".SmsReceiver">

<intent-filter android:priority="1000">

<action android:name="android.provider.Telephony.SMS_RECEIVED"/>

</intent-filter>

</receiver>

【android短信拦截的实现代码】相关文章:

Android图片处理实例介绍(图)

android实现上下滚动的TextView

android 完全退出应用程序实现代码

基于Android中dp和px之间进行转换的实现代码

android下拉刷新ListView的介绍和实现代码

Android中的JSON详细总结

Android 用SQLite实现事务的方法

Android 异步加载图片的实例代码

Android在listview添加checkbox实现原理与代码

Android 倒影算法的实现代码

精品推荐
分类导航