package com.example.sendmessage; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; 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.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity { private EditText et_phone, et_content; private Button bt; private Context context; String SENT_SMS_ACTION = "SENT_SMS_ACTION"; String DELIVERED_SMS_ACTION = "DELIVERED_SMS_ACTION"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et_phone = (EditText) findViewById(R.id.et_phone); et_content = (EditText) findViewById(R.id.et_content); bt = (Button) findViewById(R.id.bt_send); context = MainActivity.this; // 注册通知 // IntentFilter filter = new IntentFilter(); // filter.addAction(SENT_SMS_ACTION); // filter.addAction(DELIVERED_SMS_ACTION); // registerReceiver(this.broadcastReceiver, filter); // 获取短信管理器 // final SmsManager smsManager = SmsManager.getDefault(); // // PendingIntent sentIntent = PendingIntent.getBroadcast( // // MainActivity.this, 0, new Intent(), 0); // Intent sentIntent = new Intent(SENT_SMS_ACTION); // final PendingIntent sentPI = PendingIntent.getBroadcast(context, 0, // sentIntent, 0); // // create the deilverIntent parameter // Intent deliverIntent = new Intent(DELIVERED_SMS_ACTION); // final PendingIntent deliverPI = PendingIntent.getBroadcast(context, // 0, // deliverIntent, 0); bt.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { sendMes(); } }); // context.registerReceiver(new BroadcastReceiver() { // @Override // public void onReceive(Context _context, Intent _intent) { // switch (getResultCode()) { // case Activity.RESULT_OK: // Toast.makeText(context, "短信发送成功", Toast.LENGTH_SHORT) // .show(); // break; // case SmsManager.RESULT_ERROR_GENERIC_FAILURE: // Toast.makeText(context, // SmsManager.RESULT_ERROR_GENERIC_FAILURE, // Toast.LENGTH_SHORT).show(); // break; // case SmsManager.RESULT_ERROR_RADIO_OFF: // Toast.makeText(context, SmsManager.RESULT_ERROR_RADIO_OFF, // Toast.LENGTH_SHORT).show(); // break; // case SmsManager.RESULT_ERROR_NULL_PDU: // Toast.makeText(context, SmsManager.RESULT_ERROR_NULL_PDU, // Toast.LENGTH_SHORT).show(); // break; // } // } // }, new IntentFilter(SENT_SMS_ACTION)); // context.registerReceiver(new BroadcastReceiver() { // @Override // public void onReceive(Context _context, Intent _intent) { // Toast.makeText(context, "收信人已经成功接收", Toast.LENGTH_SHORT).show(); // } // }, new IntentFilter(DELIVERED_SMS_ACTION)); } private void sendMes() { // 直接调用短信接口发短信 String mobile = et_phone.getText().toString(); String content = et_content.getText().toString(); // 判断输入是否为空 if (mobile == null || "".equals(mobile)) { Toast.makeText(MainActivity.this, "发送号码不能为空!", Toast.LENGTH_SHORT) .show(); return; } // if (!isPhoneNumberValid(mobile)) { // Toast.makeText(MainActivity.this, "发送号码格式不正确!", // Toast.LENGTH_SHORT).show(); // return; // } if (content == null || "".equals(content)) { Toast.makeText(MainActivity.this, "发送内容不能为空!", Toast.LENGTH_SHORT) .show(); return; } // 调起系统发短信功能 // Uri uri = Uri.parse("smsto:10010"); // Intent it = new Intent(Intent.ACTION_SENDTO, uri); // it.putExtra("sms_body", "102"); // startActivity(it); try { // 获取短信管理器 final SmsManager smsManager = SmsManager.getDefault(); Intent sentIntent = new Intent(SENT_SMS_ACTION); PendingIntent sentPI = PendingIntent.getBroadcast(context, 0, sentIntent, 0); // SmsManager smsManager = SmsManager.getDefault(); // PendingIntent sentIntent = PendingIntent.getBroadcast( // MainActivity.this, 0, new Intent(), 0); if (content.length() >= 70) { // 短信字数大于70,自动分条 List<String> ms = smsManager.divideMessage(content); for (String str : ms) { // 短信发送 smsManager.sendTextMessage(mobile, null, str, sentPI, null); } } else { smsManager.sendTextMessage(mobile, null, content, sentPI, null); } } catch (Exception e) { e.printStackTrace(); } // Toast.makeText(MainActivity.this, "发送成功!", Toast.LENGTH_LONG).show(); context.registerReceiver(new BroadcastReceiver() { @Override public void onReceive(Context _context, Intent _intent) { switch (getResultCode()) { case Activity.RESULT_OK: Toast.makeText(context, "短信发送成功", Toast.LENGTH_SHORT) .show(); break; case SmsManager.RESULT_ERROR_GENERIC_FAILURE: // Toast.makeText(context, // SmsManager.RESULT_ERROR_GENERIC_FAILURE, // Toast.LENGTH_SHORT).show(); break; case SmsManager.RESULT_ERROR_RADIO_OFF: // Toast.makeText(context, // SmsManager.RESULT_ERROR_RADIO_OFF, // Toast.LENGTH_SHORT).show(); break; case SmsManager.RESULT_ERROR_NULL_PDU: // Toast.makeText(context, SmsManager.RESULT_ERROR_NULL_PDU, // Toast.LENGTH_SHORT).show(); break; } } }, new IntentFilter(SENT_SMS_ACTION)); } /* 检查字符串是否为电话号码的方法,并回传true or false的判断值 */ public static boolean isPhoneNumberValid(String phoneNumber) { boolean isValid = false; /* * 可接受的电话格式有: * ^\\(? : 可以使用 "(" 作为开头 * (\\d{3}): 紧接着三个数字 * \\)? : * 可以使用")"接续 * [- ]? : 在上述格式后可以使用具选择性的 "-". * (\\d{3}) : 再紧接着三个数字 * [- * ]? : 可以使用具选择性的 "-" 接续. * (\\d{4})$: 以四个数字结束. * 可以比对下列数字格式: * * (123)456-7890, 123-456-7890, 1234567890, (123)-456-7890 */ String expression = "^\\(?(\\d{3})\\)?[- ]?(\\d{3})[- ]?(\\d{4})$"; /* * 可接受的电话格式有: * ^\\(? : 可以使用 "(" 作为开头 * (\\d{2}): 紧接着两个数字 * \\)? : * 可以使用")"接续 * [- ]? : 在上述格式后可以使用具选择性的 "-". * (\\d{4}) : 再紧接着四个数字 * [- * ]? : 可以使用具选择性的 "-" 接续. * (\\d{4})$: 以四个数字结束. * 可以比对下列数字格式: * * (123)456-7890, 123-456-7890, 1234567890, (123)-456-7890 */ String expression2 = "^\\(?(\\d{2})\\)?[- ]?(\\d{4})[- ]?(\\d{4})$"; CharSequence inputStr = phoneNumber; /* 建立Pattern */Pattern pattern = Pattern.compile(expression); /* 将Pattern 以参数传入Matcher作Regular expression */ Matcher matcher = pattern.matcher(inputStr); /* 建立Pattern2 */Pattern pattern2 = Pattern.compile(expression2); /* 将Pattern2 以参数传入Matcher2作Regular expression */ Matcher matcher2 = pattern2.matcher(inputStr); if (matcher.matches() || matcher2.matches()) { isValid = true; } return isValid; } }
<?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" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="电话号码" /> <!-- 电话号码输入 --> <EditText android:id="@+id/et_phone" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="内容" /> <!-- 短信内容编辑 --> <EditText android:id="@+id/et_content" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="left" android:minLines="3" /> <!-- 可3行显示 --> <!-- 设置左边输入 --> <Button android:id="@+id/bt_send" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="发送" /> </LinearLayout>
manifest: <!-- 添加短信服务 --> <uses-permission android:name="android.permission.SEND_SMS" /> <uses-permission android:name="android.permission.READ_SMS" /> <uses-permission android:name="android.permission.INTERNET" />
相关推荐
GPRS模块,是具有GPRS数据传输功能的GSM模块。GPRS模块就是一个精简版的手机,集成GSM通信的主要功能于一块电路板上,具有发送短消息、通话、数据传输等功能。...1. 以文本方式发送短信; 2. 以PDU模式发送短信;
java代码实现短信猫短信发送,只要连接好短信猫,装上驱动(购买产品是会附带驱动程序),导入相应的包,即可实现发送短信。代码中不但实现了串口和U口之间的转换,还给出了测试方法,具体的注解。
免费!绿色!发送短信,无需注册,不是飞信! 短信发发发~~
Spring Boot阿里云短信:如何实现发送短信
今天写了一个发短信的小例子和大家分享一下,自己测试过可以成功发送。
短信猫C#、asp.net webservice发短信
1.阿里云发送短信C++源码 2.VS2019编译实测通过 3.相关Key 需要替换成自己申请的
这里介绍的是利用清扬短信服务器软件发短信的接口。 清扬短信服务器软件是一个利用了短信猫(Gsm Modem)来收发短信的软件,并支持繁体、日语等多语言短信的发送,在某些环境下,比如:在隔离网络中,似乎是收发短信的...
阿里云短信服务提供了多种发送方式,包括 API 接口、SDK 等。其中,API 接口是最常用的方式之一,它可以通过 HTTP/HTTPS 协议进行调用,使用简单、灵活。开发者只需要通过阿里云的控制台获取 AccessKey 和 SecretKey...
用c#开发的一个发短信的例程,用到了厂家提供的动态库,可在此基础上再次开发,很简单易学
* singleMessage() - 单发短信,输入号码和发送的验证码 * 作者:红模仿 QQ:21497936 * 日期 版本 说明 * 2018年4月26日 v1.0.0 使用http://sms.sms.cn/平台发送点对点短信 \**********************************...
飞信,网页,免费发短信 利用网页API 免费网页发送短信
Visual Basic短信开发DEMO示例
给自己发短信的Shell脚本利用飞信学习的好资源
Qt android 发短信,查看短信
这是一个自己开发的Android 直接发送短信方法附上代码,Android 发短信功能,包括了对内容合法性的验证,发送完成弹出提示。自己开发的直接发送短信的方法: private void sendSMS(String telNo,String smsStr,...
用web发送短信,找我要源代码,不管用什么编程语言都可以
小雨免费电脑发短信软件(电脑发短信到手机)可以通过电脑对手机免费费发送文字等功能, 让您在全球任何能上网的地方都可以免费即时地进行畅快沟通;欢迎大家下载体验。 短信软件软件说明1.短信内容的长度必须要超过四...
单片机控制模块发送短信(上)单片机控制模块发送短信(上)
一个简单的使用Android Studio写的获取通讯录内容并且打电话发短信,如果安装完后APP闪退,请到设置中权限将相应的权限给他。