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

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

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

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

出现这个报错的原因是:

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

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

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

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

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

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

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

 

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

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

 sendmess_button.setOnClickListener(new View.OnClickListener() {

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

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

 06-04 04:09:24.285: W/dalvikvm(12398): threadid=1: thread exiting with uncaught exception (group=0x40a71930)
06-04 04:09:24.326: E/AndroidRuntime(12398): FATAL EXCEPTION: main
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 }
06-04 04:09:24.326: E/AndroidRuntime(12398): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1622)
06-04 04:09:24.326: E/AndroidRuntime(12398): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1417)
06-04 04:09:24.326: E/AndroidRuntime(12398): at android.app.Activity.startActivityForResult(Activity.java:3370)
06-04 04:09:24.326: E/AndroidRuntime(12398): at android.app.Activity.startActivityForResult(Activity.java:3331)
06-04 04:09:24.326: E/AndroidRuntime(12398): at android.app.Activity.startActivity(Activity.java:3566)
06-04 04:09:24.326: E/AndroidRuntime(12398): at android.app.Activity.startActivity(Activity.java:3534)
06-04 04:09:24.326: E/AndroidRuntime(12398): at com.himi.sendmessage.MainActivity$1.onClick(MainActivity.java:47)
06-04 04:09:24.326: E/AndroidRuntime(12398): at android.view.View.performClick(View.java:4204)
06-04 04:09:24.326: E/AndroidRuntime(12398): at android.view.View$PerformClick.run(View.java:17355)
06-04 04:09:24.326: E/AndroidRuntime(12398): at android.os.Handler.handleCallback(Handler.java:725)
06-04 04:09:24.326: E/AndroidRuntime(12398): at android.os.Handler.dispatchMessage(Handler.java:92)
06-04 04:09:24.326: E/AndroidRuntime(12398): at android.os.Looper.loop(Looper.java:137)
06-04 04:09:24.326: E/AndroidRuntime(12398): at android.app.ActivityThread.main(ActivityThread.java:5041)
06-04 04:09:24.326: E/AndroidRuntime(12398): at java.lang.reflect.Method.invokeNative(Native Method)
06-04 04:09:24.326: E/AndroidRuntime(12398): at java.lang.reflect.Method.invoke(Method.java:511)
06-04 04:09:24.326: E/AndroidRuntime(12398): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
06-04 04:09:24.326: E/AndroidRuntime(12398): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
06-04 04:09:24.326: E/AndroidRuntime(12398): at dalvik.system.NativeStart.main(Native Method)
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. Python基础 (下)

    参考:菜鸟教程 目录 一.读写文件 二.错误和异常 三.XML和JSON解析 四.类 五.Python高级教程 一.读写文件 1. 打开文件:  open(filename, mode). mode有 ...

  2. 6.centos7 gitblit

    1,安装注意事项 1)必须将gitblit安装在/opt/gitblit这个目录下,因为 服务启动的脚本里面默认就是这个路径 如果不按照这个路径安装需要修改脚本 mkdir -p /opt/gitbl ...

  3. 多个模块使用python logging

    链接:https://docs.python.org/2/howto/logging-cookbook.html#logging-cookbook 具体的使用方法,请参考如下代码: import lo ...

  4. TT 安装 之 AIX

    # mkgroup -'A' id='1000' adms='root' tt -- 创建用户 # mkuser id='1000' pgrp='tt' groups='tt' adms='root' ...

  5. 【3dsMax安装失败,如何卸载、安装3dMax 2010?】

    AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...

  6. MVC参数自动装配

    在拿到一个类型的所有属性以及字段的描述信息后,就可以通过循环的方式,根据这些数据成员的名字去QueryString,Form,Session,Cookie读取所需的数据了. 就是遍历参数,然后用反射遍 ...

  7. (转)远程SSH连接服务与基本排错

    远程SSH连接服务与基本排错 原文:https://www.cnblogs.com/chensiqiqi/p/6224474.html#top 1.1 为什么要远程连接Linux系统 在实际的工作场景 ...

  8. vue-scroller的使用 && 开发自己的 scroll 插件

    vue-scroller的使用 在spa开发过程中,难免会遇到使用scroll的情况,比如下面的: 即,当用户选择好商品之后,点击购物车,就会有一个购物车弹窗,如果选择的商品小于三个,刚好合适,如果多 ...

  9. (Frontend Newbie)Web三要素(三)

    上一篇简单介绍了Web三要素中的层叠样式表,本篇主要介绍三要素中最后一个,也是最难掌握的一个-----JavaScript. JavaScript 老规矩不能破,先简要交代 JavaScript 的历 ...

  10. npm是什么NPM的全称是Node Package Manager

    npm是什么NPM的全称是Node Package Manager