详解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; } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。