首页 > 系统 > Android > 正文

详解Android短信的发送和广播接收实现短信的监听

2019-12-12 04:45:29
字体:
来源:转载
供稿:网友

本文介绍了Android短信的发送和广播接收者实现短信的监听,要注意Android清单中权限的设置以及广播的注册监听实现,废话不多说,代码如下:

以下就是 Android清单的XML

AndroidManifest.xml

<manifest xmlns: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>        <action android:name="android.intent.action.MAIN" />        <category android:name="android.intent.category.LAUNCHER" />      </intent-filter>          </activity>    <receiver android:name=".SMSBroadcastReceiver">      <intent-filter android:priority="1000">        <action android:name="android.provider.Telephony.SMS_RECEIVED"/>      </intent-filter>    </receiver>      </application>  <uses-permission android:name="android.permission.SEND_SMS"></uses-permission><!--添加权限-->  <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>   <uses-permission android:name="android.permission.READ_SMS"></uses-permission> </manifest>

发送短息的主界面mian.xml和实现Activity    SendSMS.java

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns: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

package com.zyw.broadcastsendsms;import java.util.ArrayList;import android.app.Activity;import android.os.Bundle;import android.telephony.SmsManager;import android.view.View;import android.widget.EditText;import android.widget.Toast;public class SendSMS extends Activity{  private EditText num;  private EditText content;    @Override  public void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.main);    num=(EditText) findViewById(R.id.Number);    content=(EditText) findViewById(R.id.Content);  }    public void send(View view ) {    String strNo=num.getText().toString();    String strContent=content.getText().toString();        SmsManager smsManager = SmsManager.getDefault();    //如果字数超过5,需拆分成多条短信发送    if (strContent.length() > 5) {      ArrayList<String> msgs = smsManager.divideMessage(strContent);      for (String msg : 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

package com.zyw.broadcastsendsms;import java.text.SimpleDateFormat;import java.util.Date;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 SMSBroadcastReceiver extends BroadcastReceiver {  public void onReceive(Context context, Intent intent) {    SmsMessage msg = null;      Bundle bundle = intent.getExtras();      if (bundle != null) {        Object[] pdusObj = (Object[]) bundle.get("pdus");        for (Object p : pdusObj) {          msg= SmsMessage.createFromPdu((byte[]) p);                    String msgTxt =msg.getMessageBody();//得到消息的内容                    Date date = new Date(msg.getTimestampMillis());//时间          SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");          String receiveTime = format.format(date);                    String senderNumber = 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;    }  }}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表