用户注册



邮箱:

密码:

用户登录


邮箱:

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

发表随想


还能输入: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、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

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

加载中,请稍后...