用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - android代码库

Android 广播收短信程序

2014-04-02 作者: java举报

[android]代码库

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.widget.Toast;
 
 
public class BroadcastReceiverTest extends BroadcastReceiver {
/* 该字符串并不像我们前面的发短信程序中的action一样是自定义的,因为这里我们要接受的是由其他手机的系统
短信程序发送的短信,所以这里要用android.provider.Telephony.SMS_RECEIVED来匹配系统发送的Intent
*/
 
 
private final String Receive_Message = "android.provider.Telephony.SMS_RECEIVED";
 
 
@Override
public void onReceive(Context context, Intent intent) {
// 获取该Intent的action名称
String intentActionName = intent.getAction();
if(Receive_Message.equals(intentActionName)){
StringBuilder stringBuilder = new StringBuilder();
 
 
/*
*Bundle本质上是一个map,以键值对的形式存放着值。
*其内存放着通过putExtra()方法添加进去的数据,当然这个数据有可能是开发人员添加,也有可能是系统默认添加的。
*当没有任何数据的时候,返回null
* */
Bundle bundle = intent.getExtras();
/* 系统默认的发短信程序会将信息内容通过putExtra方法放入bundle中,其map中的key为pdus,这个是写死的噢
*从下面的代码我们还可以看到,系统将数据以一个包含byte数组的数组的形式,放入了map中。
*类似putExtra("pdus",Object[] obj); 其中obj的元素为byte数组。
*/
 
 
Object[] objects = (Object[]) bundle.get("pdus");
SmsMessage[]messages = new SmsMessage[objects.length];
for (int i = 0; i < objects.length; i++) {
// createFromPdu创建一个SmsMessage对象
messages[i] = SmsMessage.createFromPdu((byte[]) objects[i]);
}
 
 
/*
* 我们这里其实还有一个getOriginatingAddress方法可以用来获取信息内容。
* 它与getDisplayOriginatingAddress的区别在于前者只针对于短信,后者还可以处理油email得到的SmsMessge对象
* 与此类似,我们还有一个getDisplayMessageBody和getDisplayMessageBody方法,两者的区别和上面的一样。
* */
 
 
for(SmsMessage message:messages){
stringBuilder.append("接收到来自:/n");
// 获取信息来源地址
stringBuilder.append(message.getDisplayOriginatingAddress());
stringBuilder.append("/n-------传来的信息---------/n");
// 获取信息内容
stringBuilder.append(message.getDisplayMessageBody());
}
Toast.makeText(context,stringBuilder.toString(), Toast.LENGTH_LONG).show();
 
 
/* 新建一个意图并发给系统以启动一个activity,在此我们通过i.addFlags()为其设置响应方式,
*系统会创建一个新的task来存放SmsReceiver这个Activity,并且启动了它,
*这就保证了SmsReceiver这个activity我们始终都能看到
*/
 
 
Intent i = new Intent(context,SmsReceiver.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
}
 
}

[代码运行效果截图]


Android 广播收短信程序


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...