发送短信并存入短信库

2024-05-07 03:32
文章标签 发送 短信 存入

本文主要是介绍发送短信并存入短信库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

随时随地技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)

在使用SmsManager服务群发短信 一文中介绍过短信的发送,这里把短信存入数据库的代码补上,比较简单,直接上代码,里面有注释:

MainActivity:

package com.home.sendsms;import java.util.ArrayList;import android.app.Activity;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.Uri;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;public class MainActivity extends Activity implements OnClickListener {private Button sendBtn;private EditText numberText;private EditText contentText;private final String SEND_ACTION = "com.home.send";private final String RECEIVE_ACTION = "com.home.receive";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);initWidget();}private void initWidget() {sendBtn = (Button) findViewById(R.id.main_btn);sendBtn.setOnClickListener(this);numberText = (EditText) findViewById(R.id.main_et_number);contentText = (EditText) findViewById(R.id.main_et_content);}@Overridepublic void onClick(View v) {if (v == sendBtn) {// 获取界面数据并验证String number = numberText.getText().toString();String content = contentText.getText().toString();if (TextUtils.isEmpty(number)) {Toast.makeText(this, "号码不能为空", Toast.LENGTH_SHORT).show();return;}if (TextUtils.isEmpty(content)) {Toast.makeText(this, "短信内容不能为空", Toast.LENGTH_SHORT).show();return;}// 注册广播registerReceiver(sendReceiver, new IntentFilter(SEND_ACTION));registerReceiver(receiveReceiver, new IntentFilter(RECEIVE_ACTION));// 发送sendSMS(number, content);// 将发送的短信插入短信库ContentValues values = new ContentValues();// 发送时间values.put("date", System.currentTimeMillis());// 阅读状态:0为未读 1为已读values.put("read", 0);// 类型:1为接收 2为发送values.put("type", 2);// 接收者号码values.put("address", number);// 短信内容values.put("body", content);// 插入短信库getContentResolver().insert(Uri.parse("content://sms"), values);}}/*** 发送短信* * @param number* @param message*/private void sendSMS(String number, String message) {SmsManager sms = SmsManager.getDefault();Intent sentIntent = new Intent(SEND_ACTION);PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, sentIntent,0);Intent receiveIntent = new Intent(RECEIVE_ACTION);PendingIntent receivePI = PendingIntent.getBroadcast(this, 0,receiveIntent, 0);// 如果短信内容超过70个字符则将这条短信拆成多条短信进行发送if (message.length() > 70) {ArrayList<String> msgs = sms.divideMessage(message);for (String msg : msgs) {sms.sendTextMessage(number, null, msg, sentPI, receivePI);}} else {sms.sendTextMessage(number, null, message, sentPI, receivePI);}}private BroadcastReceiver sendReceiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {if (getResultCode() == Activity.RESULT_OK) {Toast.makeText(context, "发送成功", Toast.LENGTH_SHORT).show();} else {Toast.makeText(context, "发送失败", Toast.LENGTH_SHORT).show();}}};private BroadcastReceiver receiveReceiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {if (getResultCode() == Activity.RESULT_OK) {Toast.makeText(context, "对方接收成功", Toast.LENGTH_SHORT).show();}}};@Overrideprotected void onDestroy() {unregisterReceiver(sendReceiver);unregisterReceiver(receiveReceiver);}
}

main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><EditTextandroid:id="@+id/main_et_number"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="输入接收者号码"android:numeric="integer"android:singleLine="true" /><EditTextandroid:id="@+id/main_et_content"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="输入短信内容" /><Buttonandroid:id="@+id/main_btn"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="20dp"android:text="发送" /></LinearLayout>

权限:

    <!-- 发送消息 --><uses-permission android:name="android.permission.SEND_SMS" /><!-- 阅读消息 --><uses-permission android:name="android.permission.READ_SMS" /><!-- 写入消息 --><uses-permission android:name="android.permission.WRITE_SMS" /><!-- 接收消息 --><uses-permission android:name="android.permission.RECEIVE_SMS" />




 

这篇关于发送短信并存入短信库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/966195

相关文章

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

使用Python和SQLAlchemy实现高效的邮件发送系统

《使用Python和SQLAlchemy实现高效的邮件发送系统》在现代Web应用中,邮件通知是不可或缺的功能之一,无论是订单确认、文件处理结果通知,还是系统告警,邮件都是最常用的通信方式之一,本文将详... 目录引言1. 需求分析2. 数据库设计2.1 User 表(存储用户信息)2.2 CustomerO

SpringBoot基于配置实现短信服务策略的动态切换

《SpringBoot基于配置实现短信服务策略的动态切换》这篇文章主要为大家详细介绍了SpringBoot在接入多个短信服务商(如阿里云、腾讯云、华为云)后,如何根据配置或环境切换使用不同的服务商,需... 目录目标功能示例配置(application.yml)配置类绑定短信发送策略接口示例:阿里云 & 腾

如何使用C#串口通讯实现数据的发送和接收

《如何使用C#串口通讯实现数据的发送和接收》本文详细介绍了如何使用C#实现基于串口通讯的数据发送和接收,通过SerialPort类,我们可以轻松实现串口通讯,并结合事件机制实现数据的传递和处理,感兴趣... 目录1. 概述2. 关键技术点2.1 SerialPort类2.2 异步接收数据2.3 数据解析2.

Windows server服务器使用blat命令行发送邮件

《Windowsserver服务器使用blat命令行发送邮件》在linux平台的命令行下可以使用mail命令来发送邮件,windows平台没有内置的命令,但可以使用开源的blat,其官方主页为ht... 目录下载blatBAT命令行示例备注总结在linux平台的命令行下可以使用mail命令来发送邮件,Win

使用Java发送邮件到QQ邮箱的完整指南

《使用Java发送邮件到QQ邮箱的完整指南》在现代软件开发中,邮件发送功能是一个常见的需求,无论是用户注册验证、密码重置,还是系统通知,邮件都是一种重要的通信方式,本文将详细介绍如何使用Java编写程... 目录引言1. 准备工作1.1 获取QQ邮箱的SMTP授权码1.2 添加JavaMail依赖2. 实现

Qt实现发送HTTP请求的示例详解

《Qt实现发送HTTP请求的示例详解》这篇文章主要为大家详细介绍了如何通过Qt实现发送HTTP请求,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、添加network模块2、包含改头文件3、创建网络访问管理器4、创建接口5、创建网络请求对象6、创建一个回复对

redis防止短信恶意调用的实现

《redis防止短信恶意调用的实现》本文主要介绍了在场景登录或注册接口中使用短信验证码时遇到的恶意调用问题,并通过使用Redis分布式锁来解决,具有一定的参考价值,感兴趣的可以了解一下... 目录1.场景2.排查3.解决方案3.1 Redis锁实现3.2 方法调用1.场景登录或注册接口中,使用短信验证码场

Java中Springboot集成Kafka实现消息发送和接收功能

《Java中Springboot集成Kafka实现消息发送和接收功能》Kafka是一个高吞吐量的分布式发布-订阅消息系统,主要用于处理大规模数据流,它由生产者、消费者、主题、分区和代理等组件构成,Ka... 目录一、Kafka 简介二、Kafka 功能三、POM依赖四、配置文件五、生产者六、消费者一、Kaf

Python手搓邮件发送客户端

《Python手搓邮件发送客户端》这篇文章主要为大家详细介绍了如何使用Python手搓邮件发送客户端,支持发送邮件,附件,定时发送以及个性化邮件正文,感兴趣的可以了解下... 目录1. 简介2.主要功能2.1.邮件发送功能2.2.个性签名功能2.3.定时发送功能2. 4.附件管理2.5.配置加载功能2.6.