今天来记录一下一个短信发送器,并且能监控短信是否发送成功

首先如果在我们程序中要发送短信必须先声明android.permission.SEND_SMS的权限

第二发送短信,我们需要一个SmsManager的类帮助我们发送短信,注意:这个类是在android.telephony.SmsManager包下的

SmsManager smsManager=SmsManager.getDefault();

创建实例,调用

smsManager.sendTextMessage(String destinationAddress, String scAddress, 

String text, PendingIntent sentIntent, 

PendingIntent deliveryIntent);

来发送短信,值得注意的是第一个参数是短信接收者的手机号码,第二个参数是不常用不用管,第三个参数是短信的内容,

第四个参数是一个PendingIntent,短信发送成功,SmsManager会利用这个PendingIntent来发送一个广播(此广播中的

ResultCode会告诉广播接受者,此条短信是否发送成功),官方的解释如下: if not NULL this PendingIntent is broadcast when the

message is successfully sent, or failed. The result code will be Activity.RESULT_OK for success, or one of these errors:RESULT_ERROR_GENERIC_FAILURE、

RESULT_ERROR_RADIO_OFF、RESULT_ERROR_NULL_PDU。

代码如下:

package com.jsako.sendsms;

import android.app.Activity;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {

    private EditText et_phone;
    private EditText et_msg;

    private IntentFilter sendFilter;
    private SendStatusReceiver sendStatusReceiver;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        et_phone = (EditText) findViewById(R.id.et_phone);
        et_msg = (EditText) findViewById(R.id.et_msg);
        sendFilter =new IntentFilter("SEND_SMS");
        sendStatusReceiver=new SendStatusReceiver();     //动态注册广播接收者
        registerReceiver(sendStatusReceiver, sendFilter);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();    //取消注册广播接收者
        unregisterReceiver(sendStatusReceiver);
        sendStatusReceiver=null;
    }

    public void send(View view){
        String phone=et_phone.getText().toString().trim();
        String msg=et_msg.getText().toString().trim();
        if(TextUtils.isEmpty(phone)||TextUtils.isEmpty(msg)){
            Toast.makeText(this,"手机号码或短信内容不能为空", 0).show();
        }
        SmsManager smsManager=SmsManager.getDefault();
        Intent intent=new Intent("SEND_SMS");     //获得一个能发出广播的意图
        PendingIntent pi=PendingIntent.getBroadcast(this, 0, intent, 0);
        smsManager.sendTextMessage(phone, null, msg, pi,null );
    }

    private class SendStatusReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            if(this.getResultCode()==RESULT_OK){          //如果结果集为RESULT_OK说明消息发送成功
                Toast.makeText(getApplicationContext(), "发送成功", 0).show();
            }else{
                Toast.makeText(getApplicationContext(), "发送失败", 0).show();
            }
        }

    }
}
时间: 2024-10-29 00:16:52

今天来记录一下一个短信发送器,并且能监控短信是否发送成功的相关文章

Android_简易的短信发送器

这个随笔将介绍如何完成一个简单的第三方的短信发送器(不打开短信界面,调用android的api完成功能) 1.首先,我们来做布局 由于我这里写的是一个简易的,,短信发送,所以只是一个LinearLayout下放了两个EditText用来存号码和内容,还有一个Button发送按钮,如果想要更华丽的布局,有兴趣的大家可以再去添加奥. 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xml

简易短信发送器

这个随笔将介绍如何完成一个简单的第三方的短信发送器(不打开短信界面,调用android的api完成功能) 1.首先,我们来做布局 由于我这里写的是一个简易的,,短信发送,所以只是一个LinearLayout下放了两个EditText用来存号码和内容,还有一个Button发送按钮,如果想要更华丽的布局,有兴趣的大家可以再去添加奥. 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xml

Android开发系列(二):短信发送器的实现

我们要实现的目标是:做一个短信发送器 界面: 因为要涉及到短信发送这种属于隐私的问题,所以我们要在AndroidManifest.xml中添加一行代码,来获得权限: <uses-permission android:name="android.permission.SEND_SMS"/> 然后,我们就要配置main.xml: <?xml version="1.0" encoding="utf-8"?> <Linear

andriod短信发送器

1 看了黑马视频,根据电话拨号器和一个仿照QQ的恶意程序的讲解视频,自己动手做了短信发送器的练习,弄了一天终于完成,挺高兴的,纪念一下, 学了几年计算机,真心认真写几行代码,真的太少了. 上图为证: 2  其中遇到不少问题 1 编辑器在创建新的andriod项目的时候,会自带一个Fragmet_main.xml,后来搜了资料说是新版的开发环境新建andriod项目都这样,解决不了问题, 我就找了个旧的编辑器,详细见上篇博客. 2 忘记设置发送短信权限 3 指针错误 -----  java.lan

无废话Android之常见adb指令、电话拨号器、点击事件的4种写法、短信发送器、Android 中各种布局(1)

1.Android是什么 手机设备的软件栈,包括一个完整的操作系统.中间件.关键的应用程序,底层是linux内核,安全管理.内存管理.进程管理.电源管理.硬件驱动 2.Dalvik VM 和 JVM 的比较 3.常见adb指令 platform-tools/adb.exe adb.exe : android debug bridge android调试桥 adb devices:列出所以连接的设备 adb kill-server :杀死adb调试桥 adb start-server :启动adb

初识安卓小程序(Android短信发送器)

首先,先创建一个安卓项目(我的版本是4.4.2的),名字为"短信发送器" 然后在res文件夹下找到layout文件夹,找到activity_main.xml或fragment_main.xml,在里面输入或拖拽按钮 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tool

安卓基础开发-短信发送器

一个安卓基础开发小案例,短信发送器: 代码演示图: 布局文件: activity_main.xml <span style="font-family:Comic Sans MS;font-size:14px;"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/

Android学习笔记(2)——短信发送器

搬运自本人博客:http://www.xgezhang.com/android_sms.html 上一篇文章中我们学着写了一个电话拨号器,这里我们继续来写一个短信发送器. 同样的按一般app开发的步骤,首先先确定下UI界面,大致效果应该是这样: 那么界面要怎么完成了?这种布局可以采用线性布局来做,比较方便.这里还是采用的相对布局,先上xml文件: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 2

批量发送短信,并批量插入短信记录

最近在项目中遇到了群发短信的需求. 需求点包括: 1.给符合条件的人群发优惠券短信 2.并对发送短信做记录,成功或者失败.(SqlServer) 短信接口: 亿美,api中有群发短信的接口,一组最大为200条. 思路: 1.发送的手机集合放进一个队列 2.依次读取队列,放到待发送列表,当满足200(短信组个数可配置在web.config中)条时,调用接口发送,直到队列数据发完 3.发送结果放进已发送短信结果集合 4.把发送结果批量插入数据库 代码: 群发helper /// <summary>