android学习笔记32--------------实现发送短信并保存到数据库,同时可以获得发送报告和接收报告
2012-02-25 16:16
405 查看
SmsManager smsMagager = SmsManager.getDefault(); // create the sentIntent parameter Intent sentIntent = new Intent(SENT_SMS_ACTION); PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, sentIntent, 0); // create the deilverIntent parameter Intent deliverIntent = new Intent(DELIVERED_SMS_ACTION); PendingIntent deliverPI = PendingIntent.getBroadcast(this, 0, deliverIntent, 0); String tel = editTel.getText().toString(); String msg = editMsg.getText().toString(); smsMagager.sendTextMessage( tel , null , msg , sentPI , deliverPI );
先上代码,上述功能实现了Android发送短信到指定号码的功能(sentPI为了获得发送报告的,DeliverPI为了获得对方接受到之后返回的报告的),区别就是:发送报告,只是短信发送出去,对面是否接受不关心;接收报告:就是发送方的短信发送到对方手机上之后,对方手机会返回给运营商一个信号,告知运营商收到短信,运营商再把这个信号发给发送方,发送方得到这个信号之后,
同时需要给这个应用权限
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
若想把刚刚发送的短信插入到数据库中,需要增加以下内容
ContentValues values = new ContentValues(); //发送时间 values.put("date", System.currentTimeMillis()); //阅读状态 values.put("read", 0); //1为收 2为发 values.put("type", 2); //送达号码 values.put("address",tel); //送达内容 values.put("body", msg); //插入短信库 getContentResolver().insert(Uri.parse("content://sms/sent"), values);同时需要增加以下权限
<uses-permission android:name="android.permission.WRITE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
开始我担心,只插入到一个表里会不会有问题,后来参看了TelephonyProvider发现我的想法是多余的,因为TelephonyProvider会把数据插入到每个表中。
注册两个广播~得到发送报告和接收报告~
@Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); registerReceiver(sendMessage, new IntentFilter(SENT_SMS_ACTION)); registerReceiver(receiver, new IntentFilter(DELIVERED_SMS_ACTION)); }
一个是发送短信的,一个是接受短信的,
BroadcastReceiver sendMessage = new BroadcastReceiver() { @Override public void onReceive(Context c, Intent intent) { // TODO Auto-generated method stub //判断短信是否发送成功 switch (getResultCode()) { case Activity.RESULT_OK: Toast.makeText(c, "短信发送成功", Toast.LENGTH_SHORT).show(); break; default: Toast.makeText(c, "发送失败", Toast.LENGTH_LONG).show(); break; } } }; BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { //表示对方成功收到短信 Toast.makeText(context, "对方接收成功",Toast.LENGTH_LONG).show(); } };
android 的短信发送可以在模拟器中进行模拟出来。
如现在启动一模拟器id 号为5554,
启动终端
telnet localhost 5554
输入help 可以看到很多用于模拟器中的功能命令
gsm call 134343434 // 便是呼叫当前模拟器命令
sms send 15555218135 Hello,this is a Message // 是向当前的模拟器发送短信息
相关文章推荐
- android学习笔记32--------------实现发送短信并保存到数据库,同时可以获得发送报告和接收报告
- android实现发送短信并保存到数据库,同时可以获得发送报告和接收报告
- 转:android实现发送短信并保存到数据库,同时可以获得发送报告和接收报告
- android短信系列之实现发送短信,并获得发送报告与接收报告
- 编写一个聊天程序:有接收数据部分,和发数据的部分, 这两部分需要同时执行,使用多线程实现,一个控制接收,一个控制发送
- android实现短信发送以及存入系统数据库
- android 发送短信的两种方式,以及接收报告和发送报告
- Android如何实现接收和发送短信
- android 实现监听短信接收并将当前位置发送出去
- 短信猫软件的实现(C#)<六>发送接收短信C#实现(API)
- Android接收和发送短信的实现代码
- Android学习笔记:完整实例实现QQ表情的发送和接收
- 详解Android短信的发送和广播接收实现短信的监听
- Android6.0下的短信接收与发送功能的实现
- Android项目实现短信的发送、接收和对短信进行拦截
- Hadoop-数据库发送和接收相关实现-DataXceiver解析<转>
- Android实现将已发送的短信写入短信数据库的方法
- apk发送短信不保存到数据库
- Android学习笔记:完整实例实现QQ表情的发送和接收
- android 发送短信的两种方式,以及接收报告和发送报告