Android(java)学习笔记99:android的短信发送器研究
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)学习笔记99:android的短信发送器研究的更多相关文章
- android开发学习---开发一个简易的短信发送器
一.需求: 开发一个简易的短信发送器,输入:对方手机号码,短信内容,点击发送按钮,短信发送成功,对方手机成功收到短信. 其中要求短信内容过长时可以自动拆分,长度英文是160个英文,中文是70个,中英混 ...
- android开发学习:打电话和发短信
1.新建一个android项目 File--New--Other--android application project 填写application name(就是应用的名字.比方:天天酷跑) 填写 ...
- Android开发学习笔记-关于Android的消息推送以及前后台切换
下面是最简单的Android的消息推送的实现方法 package com.example.shownotic; import java.util.Random; import android.supp ...
- Android 数字签名学习笔记
Android 数字签名学习笔记 在Android系统中,所有安装到系统的应用程序都必有一个数字证书,此数字证书用于标识应用程序的作者和在应用程序之间建立信任关系,如果一个permission的pro ...
- Android动画学习笔记-Android Animation
Android动画学习笔记-Android Animation 3.0以前,android支持两种动画模式,tween animation,frame animation,在android3.0中 ...
- Android:日常学习笔记(6)——探究活动(4)
Android:日常学习笔记(6)——探究活动(4) 活动的启动模式 standard模式 standard是活动默认的启动模式,在不进行显示定义的情况下,所有活动都会自动使用这种启动模式. stan ...
- Android:日常学习笔记(2)——分析第一个Android应用程序
Android:日常学习笔记(2)——分析第一个Android应用程序 Android项目结构 整体目录结构分析 说明: 除了APP目录外,其他目录都是自动生成的.APP目录的下的内容才是我们的工作重 ...
- Android Studio 学习笔记(一)环境搭建、文件目录等相关说明
Android Studio 学习笔记(一)环境搭建.文件目录等相关说明 引入 对APP开发而言,Android和iOS是两大主流开发平台,其中区别在于 Android用java语言,用Android ...
- Android自动化学习笔记:编写MonkeyRunner脚本的几种方式
---------------------------------------------------------------------------------------------------- ...
随机推荐
- PHP命名规范【转】
[转]谭博的个人网站 [类] 1.类名与类文件名采用驼峰式且首字母大写 2.类私有属性和私有方法名称以下划线开头 3.方法名使用驼峰式 [变量] 变量名使用小写字母加下划线 [函数] 函数名使用小 ...
- HDU-4737 A Bit Fun 维护
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4737 题意:给一个数列a0, a1 ... , an-1,令 f(i, j) = ai|ai+1|ai ...
- Linux下tar.xz结尾的文件的解压方法
$xz -d ***.tar.xz $tar -xvf ***.tar 可以看到这个压缩包也是两层压缩,外面是xz压缩方式,里层是tar压缩方式.
- 第二百七十二、三天 how can I 坚持
昨天加班回来都很晚了,也忘了些日志了.其实感觉加班也没什么啊,一个团队在一块说说闹闹,愉快的完成工作挺好. 今天是2015年的最后一天,2015的愿望啊,只怪自己太怂了.不怂会是什么结果. 其实更应该 ...
- CSS选择器的特殊性
在我们为元素添加样式的时候,或多或少会出现一个元素会有几个不同规则的样式.有#id的,有.class,直接标签元素的,还有各种组合起来的选择器.那CSS到底如何解决这些冲突呢,我们这次专门来探讨一下. ...
- centos5 vim升级到7.4
vim在centos中的版本为7.0,导致很多插件都无法使用,所以想到升级一下. wget ftp://ftp.vim.org/pub/vim/unix/vim-7.4.tar.bz2 tar jvz ...
- codeforce 621A(水题)
A. Wet Shark and Odd and Even time limit per test 2 seconds memory limit per test 256 megabytes inpu ...
- @Override must override a superclass method 问题解决
一.问题的由来 最近接手了了一个合作企业的项目,前期不是我司开发的,上周做了几天的技术对接,客户端界面由我负责对接,从svn检出之后,迫不及待的导入到了本地的myeclipse中,谁知立马就出现了那个 ...
- iOS 小知识-tips
--->1<--- arc的项目中使用非arc代码,则添加-fno-objc-arc: 非arc项目中使用arc代码,则添加-fobjc-arc. --->2<--- 实用的类 ...
- Smarty模板中调用PHP函数
因为应用需要,要在Smarty中调用PHP函数,实现办法如下:模板 数据条数:{$data|count} 活动页面文件后缀:{$page|substr:'-3'} 特殊情况:{$page|str_re ...