发送短信的关键是通过SmsManager对象的sendTextMessage()方法来实现的,其中sendTextMessage() 方法需要传入5个值,依次是收件人地址(String),发送地址(String) 正文内容(String)发送服务PendingIntent和送达服务(PendingIntent)其中收件人与正文是不可为Null的两个参数
定义个一个PendingIntent,getBroacast()的方法自定义PendingIntent并进行Broadcast,而后使用SmsManager。getDefault(当处理SMS短信相关的活动,例如发送数据,文字与pdu SMS 信息,都需要调用这种静态方法)所预先构建的SmsManager使用sendTextMessage()方法,将相关数据以参数形式带入既可以完成送达任务
首先定义一个Activity
package cn.mw.com.sms; import java.util.regex.Matcher; import java.util.regex.Pattern; import android.app.Activity; import android.app.PendingIntent; import android.content.Intent; import android.os.Bundle; import android.telephony.gsm.SmsManager; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class EX01_03Activity extends Activity { EditText ed_shoujian, ed_content; Button btn_send; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ed_shoujian = (EditText) findViewById(R.id.ed_shoujian); ed_content = (EditText) findViewById(R.id.ed_content); btn_send = (Button) findViewById(R.id.btn_send); ed_shoujian.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub ed_shoujian.setText(""); } }); ed_content.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub ed_content.setText(""); } }); btn_send.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub // 获取收件人的信息 String strAddress = ed_shoujian.getText().toString(); // 获取短信的信息 String strMessage = ed_content.getText().toString(); // 创建一取得defaultinstance 的SmsManager对象 SmsManager sm = SmsManager.getDefault(); // 检查收件人电话格式与短信字数是否超过七十个字符 if (isPhoneNumberValid(strAddress) == true && iswithin70(strMessage) == true) { try { PendingIntent mPI = PendingIntent.getBroadcast( getApplicationContext(), 0, new Intent(), 0); sm.sendTextMessage(strAddress, null, strMessage, mPI, null); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } Toast.makeText(getApplicationContext(), "发送成功", Toast.LENGTH_LONG).show(); ed_shoujian.setText(""); ed_content.setText(""); } else { //电话格式与短信字符不符合的条件下 Toast提醒用户 if (isPhoneNumberValid(strAddress) == false) { if (iswithin70(strMessage) == false) { Toast.makeText(getApplicationContext(), "电话号码格式错误,短信内容超过七十个字,请检查", Toast.LENGTH_LONG).show(); } else{ Toast.makeText(getApplicationContext(), "电话号码格式错误", Toast.LENGTH_LONG).show(); } } //短信字符数超过70 else if(iswithin70(strMessage)==false){ Toast.makeText(getApplicationContext(), "短信内容超过七十个,请删除部门内容", Toast.LENGTH_LONG).show(); } } } }); } protected static boolean iswithin70(String text) { // TODO Auto-generated method stub if(text.length()<=70){ return true; } else{ return false; } } //检查字符串是否为电话号码 protected boolean isPhoneNumberValid(String phoneNumber) { boolean isValid=false; String expression="^\\(?(\\d{3})\\)?[- ]?(\\d{3})[- ]?(\\d{5})$"; String expression2="^\\(?(\\d{3})\\)?[- ]?(\\d{4})[- ]?(\\d{4})$"; CharSequence inputStr=phoneNumber; Pattern pattern=Pattern.compile(expression); Matcher matcher=pattern.matcher(inputStr); Pattern pattern2=Pattern.compile(expression2); Matcher matcher2=pattern.matcher(inputStr); if(matcher.matches()||matcher2.matches()){ isValid=true; } // TODO Auto-generated method stub return isValid; } }
定义的XML
<?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" > <LinearLayout android:id="@+id/linearLayout1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:id="@+id/tv_shoujian" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="收件人" /> <EditText android:id="@+id/ed_shoujian" android:layout_width="314dp" android:layout_height="wrap_content" android:hint="请输入收件人" /> </LinearLayout> <EditText android:id="@+id/ed_content" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="0.35" android:hint="请输入内容" /> <Button android:id="@+id/btn_send" android:layout_width="76dp" android:layout_height="wrap_content" android:text="发送" /> </LinearLayout>
发送短信的权限 要在mainfest.xml 里边定义
<uses-permission android:name="android.permission.SEND_SMS"/>
以上程序就完成了发送短信的功能 (发送短信的内容不能超过70个字符,然后电话号码不能是其他字符)
相关推荐
在字符识别项目中,GUI可以作为输入图像、展示结果和设置参数的窗口,使非编程背景的用户也能方便地使用。 二、图像预处理 字符识别的第一步通常是图像预处理,包括灰度化、二值化、噪声去除、平滑滤波等步骤。在...
车牌识别字符库是一种专门用于计算机视觉技术中的车牌号码识别系统的重要组成部分。这个字符库包含了车牌号码可能包含的所有字符,包括汉字、字母和数字,每个字符都以20*40像素的尺寸进行规范化处理,确保了图像的...
在字符识别任务中,CNN首先对字符图像进行预处理,如归一化、灰度化,然后通过多层卷积和池化提取字符的形状和结构特征。 2. **循环神经网络**:RNN主要用于序列数据,如文本和时间序列。在字符识别中,尤其是识别...
在字符串发送与十六进制发送中,我们可以使用两种方法来实现。方法一是在中断函数中直接发送接收到的字符串,而方法二是在主函数中发送接收到的字符串。通过比较这两种方法,我们可以发现,方法一的实时性更好,能够...
车牌字符识别技术是计算机视觉领域中的一个重要应用,主要用于自动识别车辆车牌上的字母和数字。这一技术在智能交通、车辆管理、安全监控等多个场景中有广泛的应用。在这个特定的压缩包文件中,提供的是一个用于训练...
短信加密此类功能由于新手学习的需求量较小,所以在网上很少有一些简单的demo供新手...平时我们发送短信几乎不限长度,是因为一旦超过了单条短信的长度,手机会自动分多条发送,然后接收方分多条接收后整合在一起显示。
深度学习字符识别技术是一种利用深度学习算法来识别图像中的文字信息的技术,相比于传统的OCR技术,深度学习OCR技术在字符形态复杂、对比度低、背景干扰多的情况下有着更好的识别效果。 首先,深度学习字符识别训练...
在这个“车牌识别训练字符块”中,包含的资源显然是为了训练一个能够准确识别车牌上汉字、字母和数字的模型。 首先,我们要了解车牌识别的基本流程。它通常涉及以下几个步骤: 1. 图像预处理:这是识别的第一步,...
进行一个字符识别,使用的语言是matlab,活得一个好的分类结果
这里我们关注的是“国产字符识别技术”,它主要用于识别和理解图像中的文字内容,尤其对于汉字的识别,这是一项具有挑战性的任务,因为汉字的形态多样且结构复杂。下面将详细探讨字符识别技术的基础知识,以及与国产...
为了增强识别效果,可以在字符分割之前对图像进行去噪处理,以减少噪声对识别结果的影响。去噪可以通过各种图像滤波算法实现,常见的有高斯模糊、中值滤波等。 上述步骤中的代码示例,使用了Python的cv2库,即...
相机字符识别技术是模式识别和计算机视觉领域的一个重要分支,主要应用于自动车牌识别(ANPR)、工业自动化检测、文档扫描和数字化以及各种智能设备的文字读取等场景。在这个专题中,我们将深入探讨相机字符识别的...
在IT行业中,短信服务是企业与用户沟通的重要渠道,尤其在物流、电商等行业,短信用于传递订单信息、确认交易、提醒签收等。本实例关注的是短信内容的处理,特别是针对物流行业的货物签收信息反馈。以下是这个短信...
由于中文字符在计算机中的编码方式通常占用两个字节,而英文字符只占用一个字节,所以可以通过判断字符的ASCII码值的高位是否有特定的标志位(如最高位为1),来区分是中文字符还是英文字符。 2. C语言中的位运算符...
用matlab语言实现一幅图像中某个字符的识别
用于移动增值业务 SP/CP日常编辑短信时遇到的一些常见问题,导致的短信格式不正确,字数超长... 欢迎使用:短信字符检测工具V2.1 主要功能:检测短信长度,不包括结尾后的空格。 特色功能:替换英文符号为中文符号,...
5. **发送短信**:使用LabVIEW VI向短信模块发送AT+CMGS命令,附带电话号码和短信内容,然后发送字符串。 6. **错误处理**:处理可能出现的通信错误,如超时、未响应等问题,确保程序的健壮性。 7. **接收确认**:...
在字符识别过程中,模式识别扮演了核心角色。首先,我们需要对图像进行预处理,包括灰度化、二值化、去噪等步骤,以提高字符图像的质量。接着,通过特征提取,如边缘检测、形状分析、结构元素分析等方法,将字符转化...
6. **WindowsFormsApplication2**:这可能是一个基于Windows Forms的C#应用程序示例,用于演示如何创建一个界面,让用户输入短信内容和接收方电话号码,然后通过PDU模式发送短信。应用程序可能包含了处理PDU编码和...
4. 字符分割:在确定了车牌位置后,需要将单个字符分离开来。这一步涉及对字符间缝隙的检测和分割。 5. 字符识别:最关键的步骤,字符模板在此环节起作用。每个字符都有对应的模板库,系统会将分割后的字符与模板库...