您的位置:首页 > 移动开发 > Android开发

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

2015-04-12 23:05 1611 查看

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>

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;

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: