发送短信并存入短信库

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

相关文章

Android中如何实现adb向应用发送特定指令并接收返回

1 ADB发送命令给应用 1.1 发送自定义广播给系统或应用 adb shell am broadcast 是 Android Debug Bridge (ADB) 中用于向 Android 系统发送广播的命令。通过这个命令,开发者可以发送自定义广播给系统或应用,触发应用中的广播接收器(BroadcastReceiver)。广播机制是 Android 的一种组件通信方式,应用可以监听广播来执行

61.以太网数据回环实验(4)以太网数据收发器发送模块

(1)状态转移图: (2)IP数据包格式: (3)UDP数据包格式: (4)以太网发送模块代码: module udp_tx(input wire gmii_txc ,input wire reset_n ,input wire tx_start_en , //以太网开始发送信

Jasperreports+jaspersoft studio 实现单个或多个jrxml(jasper)文件生成一个pdf文件,并利用Servlet发送该pdf文件到浏览器中展示

Jasperreports+jaspersoft studio 实现单个或多个jrxml(jasper)文件生成一个pdf文件,并利用Servlet发送该pdf文件到浏览器中展示; 代码如下: Demo07.jrxml <?xml version="1.0" encoding="UTF-8"?><!-- Created with Jaspersoft Studio version 6.6.

node.js实现阿里云短信发送

效果图 实现 一、准备工作 1、官网直达网址: 阿里云 - 短信服务 2、按照首页提示依次完成相应资质认证和短信模板审核; 3、获取你的accessKeySecret和accessKeyId; 方法如下: 获取AccessKey-阿里云帮助中心 4、获取SignName(签名名称)和 TemplateCode(模板code); 二、代码实现 1、项目结构 【/c

springboot项目编写发送异常日志到企微工具包

1.创建基础Bean public final class ThreadFactory implements java.util.concurrent.ThreadFactory {private static final AtomicInteger poolNumber = new AtomicInteger(1);private final ThreadGroup group;priva

怎么利用NodeJS发送视频短信

随着5G时代的来临,企业的数字化转型步伐日益加快,视频短信作为新兴的数字营销工具,正逐步展现出其大的潜力。视频群发短信以其独特的形式和内容,将图片、文字、视频、声音融为一体,为用户带来全新的直观感受,为企业营销注入新的活力。 支持免费对接试用乐讯通PaaS平台 找好用的短信平台,选择乐讯通,短信群发|短信平台|群发短信软件|群发短信平台|乐讯通PaaS平台http://yun.loktong

socket函数接收发送详解

http://blog.csdn.net/g_brightboy/article/details/12854117 http://blog.csdn.net/liangkaiyang/article/details/5931901 send。。。 这里只描述同步Socket的send函数的执行流程。 当调用该函数时,send先比较待发送数据的长度

【go语言发送电子邮件】go语言版发送电子邮件

一、实现功能 用go语言发送一封邮件 二、实现源代码 package mainimport ("net/smtp""fmt""strings")/** user : example@example.com login smtp server user* password: xxxxx login smtp server password* host: smtp.example.co

【python 爬虫】python如何以request payload形式发送post请求

普通的http的post请求的请求content-type类型是:Content-Type:application/x-www-form-urlencoded, 而另外一种形式request payload,其Content-Type为application/json import jsonurl = 'https://api.github.com/some/endpoint'payload