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

来源:互联网 发布:淘宝卖家注册子账号 编辑:程序博客网 时间:2024/06/11 21:54
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>

                <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


<?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 SendSMSextends Activity{

    private EditText num;

    private EditText content;

    

    @Override

    publicvoid onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        num=(EditText) findViewById(R.id.Number);

        content=(EditText) findViewById(R.id.Content);

    }

   

    publicvoid 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 SMSBroadcastReceiverextends BroadcastReceiver {

    publicvoid 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 0