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

http://www.cnblogs.com/zyw-205520/archive/2013/01/24/2875686.html

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;

        }

    }

}


 

不要让昨天的沮丧 让今天的梦想安然失色



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值