软件编程
位置:首页>> 软件编程>> Android编程>> 详解Android短信的发送和广播接收实现短信的监听

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

作者:junjieking  发布时间:2022-08-14 16:55:23 

标签:android,短信

本文介绍了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;
   }
 }
}

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com