详解Android短信的发送和广播接收实现短信的监听
本文介绍了Android短信的发送和广播接收者实现短信的监听,要注意Android清单中权限的设置以及广播的注册监听实现,废话不多说,代码如下:
以下就是Android清单的XML
AndroidManifest.xml
<manifestxmlns:android="http://schemas.android.com/apk/res/android" package="com.zyw.broadcastsendsms" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15"/> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme"> <activity android:name=".SendSMS" android:label="@string/title_activity_send_sms"> <intent-filter> <actionandroid:name="android.intent.action.MAIN"/> <categoryandroid:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <receiverandroid:name=".SMSBroadcastReceiver"> <intent-filterandroid:priority="1000"> <actionandroid:name="android.provider.Telephony.SMS_RECEIVED"/> </intent-filter> </receiver> </application> <uses-permissionandroid:name="android.permission.SEND_SMS"></uses-permission><!--添加权限--> <uses-permissionandroid:name="android.permission.RECEIVE_SMS"></uses-permission> <uses-permissionandroid:name="android.permission.READ_SMS"></uses-permission> </manifest>
发送短息的主界面mian.xml和实现Activity SendSMS.java
<?xmlversion="1.0"encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:padding="10sp"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="手机号码"/> <EditText android:id="@+id/Number" android:numeric="integer" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="请输入电话号码"/> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="短信内容"/> <EditText android:id="@+id/Content" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="请输入短信内容" android:lines="3"/> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content"> </TextView> <Button android:id="@+id/btnSend" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:paddingTop="20sp" android:text="发送短信" android:onClick="send" /> </LinearLayout>
实现Activity
SendSMS.java
packagecom.zyw.broadcastsendsms;
importjava.util.ArrayList;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.telephony.SmsManager;
importandroid.view.View;
importandroid.widget.EditText;
importandroid.widget.Toast;
publicclassSendSMSextendsActivity{
privateEditTextnum;
privateEditTextcontent;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
num=(EditText)findViewById(R.id.Number);
content=(EditText)findViewById(R.id.Content);
}
publicvoidsend(Viewview){
StringstrNo=num.getText().toString();
StringstrContent=content.getText().toString();
SmsManagersmsManager=SmsManager.getDefault();
//如果字数超过5,需拆分成多条短信发送
if(strContent.length()>5){
ArrayList<String>msgs=smsManager.divideMessage(strContent);
for(Stringmsg:msgs){
smsManager.sendTextMessage(strNo,null,msg,null,null);
}
}else{
smsManager.sendTextMessage(strNo,null,strContent,null,null);
}
num.setText("");
content.setText("");
Toast.makeText(SendSMS.this,"短信发送完成",Toast.LENGTH_LONG).show();
}
}
广播接收者实现短信的监听 SMSBroadcastReceiver.java
packagecom.zyw.broadcastsendsms;
importjava.text.SimpleDateFormat;
importjava.util.Date;
importandroid.content.BroadcastReceiver;
importandroid.content.Context;
importandroid.content.Intent;
importandroid.os.Bundle;
importandroid.telephony.SmsMessage;
importandroid.widget.Toast;
publicclassSMSBroadcastReceiverextendsBroadcastReceiver{
publicvoidonReceive(Contextcontext,Intentintent){
SmsMessagemsg=null;
Bundlebundle=intent.getExtras();
if(bundle!=null){
Object[]pdusObj=(Object[])bundle.get("pdus");
for(Objectp:pdusObj){
msg=SmsMessage.createFromPdu((byte[])p);
StringmsgTxt=msg.getMessageBody();//得到消息的内容
Datedate=newDate(msg.getTimestampMillis());//时间
SimpleDateFormatformat=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");
StringreceiveTime=format.format(date);
StringsenderNumber=msg.getOriginatingAddress();
if(msgTxt.equals("Testing!")){
Toast.makeText(context,"success!",Toast.LENGTH_LONG)
.show();
System.out.println("success!");
return;
}else{
Toast.makeText(context,msgTxt,Toast.LENGTH_LONG).show();
System.out.println("发送人:"+senderNumber+"短信内容:"+msgTxt+"接受时间:"+receiveTime);
return;
}
}
return;
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。