1.第一种可以调用系统内部的短信程序.

之前我曾经出现过一个bug就是报错:

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.SENDTO dat=Tel:xxx }……

这是因为我使用intent调用系统编辑短信服务参数没有设置好,后认真核对修改之后,改成如下的样子就没有问题了:

出现这个报错的原因是:

之前我调用Intent启动activity的代码是:

  1. Intent intent = new IntentIntent.ACTION_SENDTO,Uri.parse("sms:“+message);
  2. startActivity(intent);

这里调用这个构造方法是不行的,我们回去看API,发现:

Intent(String action, Uri uri)
          Create an intent with a given action and for a given data url.(这要求是给定的数据,也就是常量),也就是说构造方法参数不能是变量

(具体方法实体,可以去看API)

下面使用intent调用系统内部的短信编辑程序

  1. 1 Intent intent = new Intent();
  2. 2 intent.setAction(Intent.ACTION_SENDTO);
  3. 3 intent.setData(Uri.parse("smsto:"+num));
  4. 4 intent.putExtra("sms_body", message);
  5. 5 startActivity(intent);

 

点击一下:发送短信,程序会主动重新跳转到下面的界面,是调用android系统内部的短信编辑程序

2. 就是我们不要调用android系统的短信编辑程序,而是编写属于自己短信编辑程序:(程序部分重要代码如下):

  1. sendmess_button.setOnClickListener(new View.OnClickListener() {
  2. @Override
  3. public void onClick(View v) {
  4. String str2 = "";//切记这里只能定义为"",空字符,之前我定义为null,总是无法弹出发送内容为空的提示
  5. String num = edit_num.getText().toString();
  6. String message = edit_mess.getText().toString();
  7. SmsManager smsManager = SmsManager.getDefault();
  8. ArrayList<String> texts= smsManager.divideMessage(message);//拆分短信,字数多的短信拆分成多个短信
  9. if (message.equals(str2) || num.equals(str2)) {
  10. Toast.makeText(MainActivity.this.getApplicationContext(),
  11. "你个二愣子,你还没输入短信内容或者输入手机号码", 1).show();
  12. }
  13. // Intent intent = new Intent();
  14. // intent.setAction(Intent.ACTION_SENDTO);
  15. // intent.setData(Uri.parse("smsto:"+num));
  16. // intent.putExtra("sms_body", message);
  17. // startActivity(intent);
  18. for (String text : texts) {
  19. smsManager.sendTextMessage(num, null, text, null, null);
  20. }
  21. }
  22. });

 在这之后我也遇到Intent调用拨号出现相应错误:

  1. 06-04 04:09:24.285: W/dalvikvm(12398): threadid=1: thread exiting with uncaught exception (group=0x40a71930)
  2. 06-04 04:09:24.326: E/AndroidRuntime(12398): FATAL EXCEPTION: main
  3. 06-04 04:09:24.326: E/AndroidRuntime(12398): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.CALL dat=Tel:xxx }
  4. 06-04 04:09:24.326: E/AndroidRuntime(12398): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1622)
  5. 06-04 04:09:24.326: E/AndroidRuntime(12398): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1417)
  6. 06-04 04:09:24.326: E/AndroidRuntime(12398): at android.app.Activity.startActivityForResult(Activity.java:3370)
  7. 06-04 04:09:24.326: E/AndroidRuntime(12398): at android.app.Activity.startActivityForResult(Activity.java:3331)
  8. 06-04 04:09:24.326: E/AndroidRuntime(12398): at android.app.Activity.startActivity(Activity.java:3566)
  9. 06-04 04:09:24.326: E/AndroidRuntime(12398): at android.app.Activity.startActivity(Activity.java:3534)
  10. 06-04 04:09:24.326: E/AndroidRuntime(12398): at com.himi.sendmessage.MainActivity$1.onClick(MainActivity.java:47)
  11. 06-04 04:09:24.326: E/AndroidRuntime(12398): at android.view.View.performClick(View.java:4204)
  12. 06-04 04:09:24.326: E/AndroidRuntime(12398): at android.view.View$PerformClick.run(View.java:17355)
  13. 06-04 04:09:24.326: E/AndroidRuntime(12398): at android.os.Handler.handleCallback(Handler.java:725)
  14. 06-04 04:09:24.326: E/AndroidRuntime(12398): at android.os.Handler.dispatchMessage(Handler.java:92)
  15. 06-04 04:09:24.326: E/AndroidRuntime(12398): at android.os.Looper.loop(Looper.java:137)
  16. 06-04 04:09:24.326: E/AndroidRuntime(12398): at android.app.ActivityThread.main(ActivityThread.java:5041)
  17. 06-04 04:09:24.326: E/AndroidRuntime(12398): at java.lang.reflect.Method.invokeNative(Native Method)
  18. 06-04 04:09:24.326: E/AndroidRuntime(12398): at java.lang.reflect.Method.invoke(Method.java:511)
  19. 06-04 04:09:24.326: E/AndroidRuntime(12398): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
  20. 06-04 04:09:24.326: E/AndroidRuntime(12398): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
  21. 06-04 04:09:24.326: E/AndroidRuntime(12398): at dalvik.system.NativeStart.main(Native Method)
  22. 06-04 04:09:26.744: I/Process(12398): Sending signal. PID: 12398 SIG: 9

这个和上面短信问题一样的,还是基础概念不扎实

Android(java)学习笔记38:Android 短信发送的更多相关文章

  1. Android系统应用Mms之Sms短信发送流程(Mms应用部分)二

    1. 新建一条短信, 在发送短信之前, 首先创建的是一个会话Conversation, 以后所有与该接收人(一个或多个接收人)的消息交互, 都在该会话Conversation中. ComposeMes ...

  2. Java版阿里云通信短信发送API接口实例(新)

    阿里云通信(原名阿里大于)的短信服务(Short Message Service)是阿里云为用户提供的一种通信服务的能力,支持快速发送短信验证码.短信通知等. 完美支撑双11期间2亿用户,发送6亿短信 ...

  3. Android(java)学习笔记86:案例短信发送器

    1.一般我们第一步都是先创建这个main.xml布局文件,这是良好的习惯: <?xml version="1.0" encoding="utf-8"?&g ...

  4. Android(java)学习笔记69:短信发送器

    1. 一般我们第一步都是先创建这个main.xml布局文件,这是良好的习惯: <?xml version="1.0" encoding="utf-8"?& ...

  5. android菜鸟学习笔记29----Android应用向用户发送提示信息的方式总结

    常见的向用户发送提示信息的方式有3种,分别为: 1)发送Toast信息 2)弹出对话框 3)发送通知 总结如下: 方式1:发送Toast信息: 这种方式最简单,在之前的学习中多次使用过.Toast是在 ...

  6. Android开发学习笔记-关于Android的消息推送以及前后台切换

    下面是最简单的Android的消息推送的实现方法 package com.example.shownotic; import java.util.Random; import android.supp ...

  7. java学习笔记38(sql注入攻击及解决方法)

    上一篇我们写了jdbc工具类:JDBCUtils ,在这里我们使用该工具类来连接数据库, 在之前我们使用 Statement接口下的executeQuery(sql)方法来执行搜索语句,但是这个接口并 ...

  8. Java学习笔记38(字符流)

    字符输出流:Writer类:使用时候需要它的子类 局限性:只能写文本文件,无法写其他文件 方法: package demo; import java.io.FileWriter; import jav ...

  9. Android 数字签名学习笔记

    Android 数字签名学习笔记 在Android系统中,所有安装到系统的应用程序都必有一个数字证书,此数字证书用于标识应用程序的作者和在应用程序之间建立信任关系,如果一个permission的pro ...

  10. Android短彩信源码解析-短信发送流程(三)

    3.短信pdu的压缩与封装 相关文章: ------------------------------------------------------------- 1.短信发送上层逻辑 2.短信发送f ...

随机推荐

  1. PIE SDK专题制图下屏幕坐标转地图坐标

    1.    功能简介 PIESDK提供了专题制图下鼠标屏幕坐标转地图坐标功能. 2. 功能实现说明 2.1屏幕坐标转地图坐标 此功能用到了IPageLayout.ToMapPoint()方法,它的主要 ...

  2. 超文本传送协议 HTTP

    超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准. HTTP是一个属于应用层的面向对象的协议, ...

  3. mssql 死锁方面的一些资料。

    -- 1.查询死锁的进程,表名 select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) as tableNa ...

  4. eclipse F6和F8的问题

    # 首先大致说明一下F6和F8的作用: | 在debug模式下, F6的作用是跳到下一步,F8的作用是跳到下一个断点 # 情景: | 在eclipse以debug模式同时启动两个项目,并且两个项目都打 ...

  5. nginx优化项目

    隐藏版本信息 server_tokensSyntax:     server_tokens on | off | build | string;Default:     server_tokens o ...

  6. BNU 20860——Forwarding Emails——————【强连通图缩点+记忆化搜索】

    Forwarding Emails Time Limit: 1000ms Memory Limit: 131072KB This problem will be judged on UVA. Orig ...

  7. Java学习第十八天

    1:Map(掌握) (1)将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值. (2)Map和Collection的区别? A:Map 存储的是键值对形式的元素,键唯一,值可以重 ...

  8. c#-IO和序列化操作

    IO 用到的命名空间:using System.IO; 文件和目录的管理! File类 FileInfo类 Directory类 DirectoryInfo类 操作文件的类! FileStream{ ...

  9. js获取客户端用户IP

    <script src="http://pv.sohu.com/cityjson?ie=utf-8"></script> <script type=& ...

  10. C# 面向对象多态的抽象性&接口 object&is as类型转换运算符

    抽象类/抽象方法 abstract  抽象的数据类型 抽象类不能被实例化 抽象类中不一定存在抽象方法 抽象方法一定是在抽象类中 抽象类里可以放任意的方法 接口 interface 不是类,就是用来当爹 ...