实现Android应用的发送消息


实现两个安卓机之间发送短消息:
新建一个Android项目:
在MainActivity中添加一个EditText,id=et_content,用来输入想要发送的短信内容
然后添加一个Button按钮,it=btn_send,点击后发送短消息
然后在MainActivity.java中添加如下代码:

    EditText etContent; //声明输入框Button btnSend; //声明发送按钮private MyReciver receiver;//声明一个广播接收器@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);etContent=(EditText) findViewById(R.id.et_content);btnSend=(Button) findViewById(R.id.bt_send);//在发送按钮上添加一个监听器,点击发送后会执行onClick方法btnSend.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {//在onClick方法中执行SendSms()方法sendSMS();}});}protected void sendSMS() {//通过隐式发送intent实现
----------------//启动系统自带的action:ACTION_SENDTOIntent intent = new Intent(Intent.ACTION_SENDTO);//发送给号码为15555215554的设备Uri data = Uri.parse("smsto:"+15555215554);intent.setData(data);//"sms_body"是指系统数据表sms中的body字段,存放的是短信内容intent.putExtra("sms_body", etContent.getText().toString());startActivity(intent);//另外一种通过发送隐式intent的方式来实现
------------------------Intent intent = new Intent(Intent.ACTION_VIEW);intent.setType("vnd.android-dir/mms-sms");//address为数据表中存放电话号码的字段intent.putExtra("address", "15555215554");intent.putExtra("sms_body", etContent.getText().toString());startActivity(intent);//以上两种方法,除了电话号码外其他都为固定用法,记住就好//利用代码发送短信, 但是短信不会被写入系统数据表
--------------------------
//利用代码发送短信,首先要在AndroidMainFest.xml添加接收和发送权限
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>//构建一个SMSManager,用来发送短信SmsManager manager = SmsManager.getDefault();//自定一两个intent,发送两个隐式意图,这两个隐式意图自己定义Intent intent1 =  new Intent("com.example.SENT");;Intent intent2 = new Intent("com.example.DELIVERY");//延迟意图 sendTextMessage()方法后边两个参数pi1和pi2为pendingIntent 延迟意图这两个延迟意图用来查看短信是否发出和接收pi1在发送者发送信息送达基站时,会调用,标志着短信已经发出pi2是从基站送达接收者手机时会被调用,标志着短信已经由接收者接收,因为发送出去的信息不一定会被接收到,所以pi2不一定会被调用,这里的pi1和pi2通过广播的方式,通知短信发送的相关信息PendingIntent pi1 = PendingIntent.getBroadcast(this, 0, intent1 , 0);//延迟意图PendingIntent pi2 = PendingIntent.getBroadcast(this, 0, intent2 , 0);//发送短信manager.sendTextMessage("15555215556", null, etContent.getText().toString(), pi1, pi2);}//onREsume()方法是Activity运行过程中与用户交互时执行的方法,一般可以再次方法中注册broadcastReceiver@Overrideprotected void onResume() { // TODO Auto-generated method stubsuper.onResume();//创建一个自定义的receiverreceiver = new MyReciver();//创建意图过滤器,并把刚才定义的Action添加上,表示只接收这些action发送的广播IntentFilter filter = new IntentFilter();filter.addAction("com.example.SENT");filter.addAction("com.example.DELIVERY");//安卓系统后台有一个服务(Service),专门用来接收短消息。当有新的消息达到时,它会发送一个广播,广播的Action是“android.provider.Telephony.SMS_RECEIVED”并且将收到短消息作为广播Intent的一部分(Intent的Extra)发送出去。权限高的先得到filter.addAction("android.provider.Telephony.SMS_RECEIVED");//在这里给filter添加一个最高权限;filter.setPriority(Integer.MAX_VALUE);//注册receiverregisterReceiver(receiver, filter);}@Overrideprotected void onPause() {// TODO Auto-generated method stubsuper.onPause();//注销注册unregisterReceiver(receiver);}//既然发送了广播就要有一个广播接收者,自定义一个广播接收者,自定义一个类MyReceiver继承BroadcastReceiverpublic class MyReciver extends BroadcastReceiver{@Overridepublic void onReceive(Context context, Intent intent) {String action = intent.getAction();//既然发送了广播就要有一个广播接收者,自定义一个广播接收者if("com.example.SENT".equals(action)){Log.d("TAG", "短信发送成功"+System.currentTimeMillis());}//如果intent的action是com.example.SENT,表示pi1被调用,即短信已经送达基站else if("com.example.DELIVERY".equals(action)){Log.i("TAG", "对方已经收到短信"+System.currentTimeMillis());}//如果intent的action是android.provider.Telephony.SMS_RECEIVED,这时我们就可以开始处理短信内容了if("android.provider.Telephony.SMS_RECEIVED".equals(action)){//处理消息,StringBuilder 对象用来存放短信信息//String number 用来存放电话号码Bundle bundle = intent.getExtras();Object[] pdus = (Object[]) bundle.get("pdus");StringBuilder sb = new StringBuilder();String number = "";//把一个一个的pdus转换为一段段的短消息for(int i=0;i<pdus.length;i++){SmsMessage message  = SmsMessage.createFromPdu((byte[]) pdus[i]);//然后把正文拼接起来sb.append(message.getDisplay
MessageBody());             //获取电话号码number = message.getDisplayOriginatingAddress();}Log.d("TAG", "发送方电话"+number+"内容为"+sb);}}}

Android应用发送短信的实现相关推荐

  1. android将发送短信写入发件箱

    最近写了一个应用批量发送短信,但是在发件箱里却看不到发送的内容 于是找了一个方法将发送的短信写入发件箱: 代码如下,可供参考: try{ContentValues values = new Conte ...

  2. Android之发送短信后按钮(60秒)变灰色每隔一秒递减显示

    无论是做PC端还是android端,每次注册都有发送短信之后,60秒每隔一秒递减显示,如下图 这个地方需要注意的是按钮变灰色之后不能再点击,然后就是android更新UI,需要用handle,或者其它 ...

  3. Android 手机发送短信

    参照网上的例子,做了一个手机发送短信的app. 有两种发送方法:第一种方法测试没有信息的发送记录,第二种调用的sms的Activity还要自行操作. 首先是xml布局文件代码: <LinearL ...

  4. Android 中发送短信

    import android.net.Uri;//调用Android系统API发送短信 Uri uri = Uri.parse("smsto:" + strSmsPhone_val ...

  5. android实现发送短信的功能

    在上次的博客中已经实现了拨打电话的功能,但是在实际中使用短信的几率也是比较大的,好多手机卡短信都是包月的,像移动校园卡每个月可以发200条短信,超出之后才付钱.但这些日子已经一去不复返了,我也毕业了, ...

  6. android之发送短信的方法研究

    android中可以通过两种方式发送短信 第一:调起系统发短信功能:主要代码如下: Uri uri = Uri.parse("smsto:10010"); Intent it = ...

  7. Android - 批量发送短信的实现方式

    做了一个简单的批量发短信小工具.功能:从 sdcard 中读取发送短信的手机列表,每行一个手机号(存在/sdcard/ADAGroupSMS/PhoneNum.txt),批量发送短信.适用于广告推广. ...

  8. android模拟器发送短信

    编程建立一个短信发送界面.提供输入手机号码和短信内容,利用系统服务, 发送短信内容到另一个模拟器. 效果: 代码 布局文件 <?xml version="1.0" encod ...

  9. android 发送彩信监听,在Android中发送短信和彩信,监听短信并显示

    发送短信: String body="this is sms demo"; Intent mmsintent = new Intent(Intent.ACTION_SENDTO, ...

  10. Android之发送短信的两种方式

    SMS涉及的主要类SmsManager 实现SMS主要用到SmsManager类,该类继承自java.lang.Object类,下面我们介绍一下该类的主要成员. 公有方法: ArrayList< ...

最新文章

  1. armv8 汇编 绝对地址赋值_ARMv8带来的变化
  2. Import error: no module named cv2 错误解决方法
  3. NPOI 导入Excel和读取Excel
  4. 浅淡绿萝2.0和星火计划
  5. 【机器学习】基于LightGBM算法实现数据挖掘!
  6. 我的四轴专用PID参数整定方法及原理
  7. InstallShield高级应用--获取机机所有ORACLE服务列表
  8. 【HDU - 5881】Tea(思维,找规律)
  9. 深入了解HashMap
  10. 深度学习笔记(2) 神经网络基础
  11. python 爬虫 糗百成人
  12. python真好玩 pdf 下载_Python真好玩:教孩子学编程_PDF电子书
  13. 在vscode中打开PDF文件
  14. Linux删除所有文件之后的恢复快照恢复
  15. H5中段落自动空两格
  16. 消息中间件之二:kafka详解
  17. PLUG AND PLAY LANGUAGE MODELS: A SIMPLE APPROACH TO CONTROL LEDTEXT(PPLM):代码深入理解(二)—PPLM_Discrim
  18. 目标检测, 实例分割, 图像分类, panoptic segmentation文献
  19. 20189200余超 2018-2019-2 移动平台应用开发实践第八周作业
  20. tagged pointer

热门文章

  1. stm32f103ve驱动鹰眼ov7725摄像头
  2. ABAP WORKFLOW工作流创建(一)
  3. 项目管理--控制项目范围
  4. 初识Spring MVC-0412-v1.0张雅慧
  5. 内蒙古大学计算机2019年复试真题解答
  6. 香侬科技:打造出有中国文化特色的全球技术领先人工智能公司 | 百万人学AI评选
  7. 有乳腺结节严不严重 乳房结节1cm要手术吗
  8. JVM的内存分配与回收策略实战——对象优先在Eden分配
  9. LiFi 真的可以取代 Wi-Fi 吗?
  10. 如何快速搞定一篇期刊论文