Android 收发短信 (8.2)
来源:互联网 发布:mac redis可视化工具 编辑:程序博客网 时间:2024/05/16 17:58
效果:点击发送短信开始发送短信
收到短信时将短信的内容显示出来
代码如下:
权限声明:
<uses-permission android:name="android.permission.RECEIVE_SMS" /><uses-permission android:name="android.permission.SEND_SMS" />当收不到短信时候,手动在应用管理中将应用的短信收发权限打开
/** * Created by Linda on 16/5/14. * 短信的收发 * 根绝国际标准 每条短信的长度不超过160 个字符 * 如果短信长度过长,可以调用sendMultipartTextMessage()分隔成多条短信来发送 */public class MesaageActivity extends Activity { private TextView sender; private TextView content; private EditText to;//接收短信的手机号码 private EditText msgInput;//发送信息的内容 private Button send; private IntentFilter receiveFilter;//短信接收 private MessageReceiver messageReceiver; private IntentFilter sendFilter;//短信发送 private SendStatusReceiver sendStatusReceiver; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.message); sender = (TextView) findViewById(R.id.sender); content = (TextView) findViewById(R.id.content); to = (EditText) findViewById(R.id.to); msgInput = (EditText) findViewById(R.id.msg_input); send = (Button) findViewById(R.id.send);// 注册短信接收的广播 receiveFilter = new IntentFilter(); receiveFilter.addAction("android.provider.Telephony.SMS_RECEIVED"); receiveFilter.setPriority(100); messageReceiver = new MessageReceiver(); registerReceiver(messageReceiver, receiveFilter);// 注册监听短信发送的广播 sendFilter = new IntentFilter(); sendFilter.addAction("SENT_SMS_ACTION"); sendStatusReceiver = new SendStatusReceiver(); registerReceiver(sendStatusReceiver, sendFilter);// 点击按钮发送短信 send.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { SmsManager smsManager = SmsManager.getDefault(); Intent sentIntent = new Intent("SENT_SMS_ACTION"); PendingIntent pi = PendingIntent.getBroadcast( MesaageActivity.this, 0, sentIntent, 0); //根据号码和内容发送短信(需要权限) smsManager.sendTextMessage(to.getText().toString(), null, msgInput.getText().toString(), pi, null); } }); } @Override protected void onDestroy() { super.onDestroy(); unregisterReceiver(messageReceiver); unregisterReceiver(sendStatusReceiver); }//短信接收的广播 class MessageReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Bundle bundle = intent.getExtras(); Object[] pdus = (Object[]) bundle.get("pdus");//获取短信数组 SmsMessage[] messages = new SmsMessage[pdus.length]; for (int i = 0; i < messages.length; i++) { messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);//将pdu字符数组转换成SmsMessage对象 } String address = messages[0].getOriginatingAddress();//获取短信发送方的号码 String fullMessage = ""; for (SmsMessage message : messages) { fullMessage += message.getMessageBody();//获取短信的内容 } sender.setText(address); content.setText(fullMessage); abortBroadcast(); } }//监听广播是否发送成功的广播 class SendStatusReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (getResultCode() == RESULT_OK) { Toast.makeText(context, "Send succeeded", Toast.LENGTH_LONG) .show(); } else { Toast.makeText(context, "Send failed", Toast.LENGTH_LONG) .show(); } } }}
0 0
- Android 收发短信 (8.2)
- android应用程序(一) 短信收发
- android收发短信
- Android收发短信
- Android短信收发
- Android收发短信
- Android收发短信
- Android短信收发
- Android 应用中收发短信
- Android 接收和收发短信
- Android中短信的收发
- Android下实现短信的收发
- Android下实现短信SMS的收发
- Android下调用收发短信邮件等
- Android下实现短信的收发
- Android下调用收发短信邮件等
- Android中通过广播接收者收发短信
- Android实战技巧之三十九:短信收发
- MYSQL分区表测试
- JS Map 和 List 的简单实现
- Android UI 之一步步教你自定义控件(自定义属性、合理设计onMeasure、合理设计onDraw等)
- Hust oj 1548 基础数据结构——循环链表
- 反射和动态代理【原】
- Android 收发短信 (8.2)
- EditText关于输入小数点的小问题
- 聊一聊服务器的那些事儿
- android 获取屏幕高度和宽度 的方法
- 计算机网络之HTTP代理服务器
- Android官方MVP架构解读
- 排序算法
- 《UNIX环境高级编程》(第三版第一章)
- 1.1typescript class