1. 一般我们第一步都是先创建这个main.xml布局文件,这是良好的习惯:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" > <TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/input_number" />//android:text下面都是类似的,都是在string.xml下创建字符资源,然后利用@string/xxx <EditText
android:id="@+id/et_number"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:lines="1"
android:numeric="integer" >
</EditText> <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/input_content" /> <EditText
android:id="@+id/et_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:lines="4" /> <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="send"
android:text="@string/send" /> </LinearLayout>

这个布局文件的效果图如下:

下面我们进入源代码:

 package cn.itcast.sms;

 import java.util.ArrayList;

 import android.app.Activity;
import android.os.Bundle;
import android.telephony.SmsManager; //gsm cdma 3g
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast; public class MainActivity extends Activity {
private static final String TAG = "MainActivity";
private EditText mEtNumber;
private EditText mEtContent; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main6);
// mEtContent = (EditText) this.findViewById(R.id.et_content);
// mEtNumber = (EditText) this.findViewById(R.id.et_number); } public void send(View view){
String number = mEtNumber.getText().toString().trim();
String content = mEtContent.getText().toString().trim();
if("".equals(number)||"".equals(content)){
//提示用户 短信的接收人 或者 内容不能为空
// 上下文 其实就是一个全局的对象
Toast.makeText(this, R.string.error_message, Toast.LENGTH_LONG).show();
return ;
}else{
Log.i(TAG,"发送短信 接受者"+number+" 内容"+content);
SmsManager smsmanager = SmsManager.getDefault();
//sentIntent, deliveryIntent延期的意图 ,
// sentintent 发送报告
// deliveryIntent 送达报告
//smsmanager.sendTextMessage(number, null, content, null, null); //一条短信最大的文本长度 是多少 ?
// 中文 70 汉字 英文 160字符
ArrayList<String> messages = smsmanager.divideMessage(content);
for(String message : messages){
smsmanager.sendTextMessage(number, null, message, null, null);
}
}
}
}
备注:   SmsManager smsmanager = SmsManager.getDefault();
如果单单就不想被其他实例化:那就直接在这个构造函数中private限定。但是那样你自己也用不了。
单例模式 只可以创建一个实例,外面的类调用的话只能是这个类已经创建好的实例。代码给你看看: public class Foo {
private EagerSingleton() { } //私有的构造函数 外面不能创建新的实例
private static Foo foo = new Foo(); //类中自己创建一个实例
public static Foo getInstance(){//对外面调用你的实例留个方法 return foo;
}
}
 

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

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

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

  2. Android学习笔记_2_发送短信

    1.首先需要在AndroidManifest.xml文件中加入发送短信的权限 <uses-permission android:name="android.permission.SEN ...

  3. android开发学习---开发一个简易的短信发送器

    一.需求: 开发一个简易的短信发送器,输入:对方手机号码,短信内容,点击发送按钮,短信发送成功,对方手机成功收到短信. 其中要求短信内容过长时可以自动拆分,长度英文是160个英文,中文是70个,中英混 ...

  4. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  5. Android:日常学习笔记(2)——分析第一个Android应用程序

    Android:日常学习笔记(2)——分析第一个Android应用程序 Android项目结构 整体目录结构分析 说明: 除了APP目录外,其他目录都是自动生成的.APP目录的下的内容才是我们的工作重 ...

  6. Java学习笔记之log4j与commons-logging<转>

    Java学习笔记之log4j与commons-logging<转> (2011-02-16 11:10:46) 转载▼ 标签: 杂谈 分类: 技术学习之其他 Logger来自log4j自己 ...

  7. 0028 Java学习笔记-面向对象-Lambda表达式

    匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...

  8. Android动画学习笔记-Android Animation

    Android动画学习笔记-Android Animation   3.0以前,android支持两种动画模式,tween animation,frame animation,在android3.0中 ...

  9. 无废话Android之常见adb指令、电话拨号器、点击事件的4种写法、短信发送器、Android 中各种布局(1)

    1.Android是什么 手机设备的软件栈,包括一个完整的操作系统.中间件.关键的应用程序,底层是linux内核,安全管理.内存管理.进程管理.电源管理.硬件驱动 2.Dalvik VM 和 JVM ...

随机推荐

  1. HttpListener supports SSL only for localhost? install certificate

    1.Start-All Programs - 2.execute below lines on that ‘Developer Command Prompt..’ tool makecert -n & ...

  2. RhinoMocks简单范例

    using System; namespace MockTest { public interface IBBB { int Number { get; } int Compute(int j); i ...

  3. e2e 自动化集成测试 架构 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (三) SqlServer数据库的访问

    上一篇文章“e2e 自动化集成测试 架构 京东 商品搜索 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step 二 图片验证码的识别” ...

  4. CSLA的项目结构(一)

    由于我也是边看边学,在很多概念不是很清晰的情况下,也不好将书中的大段内容全部摘抄过来,所以结合项目源码先分析再总结,就成目前比较可行方案,第一篇先从项目结构入手. 项目源码下载后,主要的功能集中在Co ...

  5. 各类JavaScript插件

    ZeroClipboard复制内容到剪切板(支持IE.FF.Chrome) ZeroClipboard.js ZeroClipboard.swf hotkeys键盘监听 jquery.hotkeys. ...

  6. Tcp服务端判断客户端是否断开连接

    今天搞tcp链接弄了一天,前面创建socket,绑定,监听等主要分清自己的参数,udp还是tcp的.好不容易调通了,然后就是一个需求,当客户端主动断开连接时,服务端也要断开连接,这样一下次客户端请求链 ...

  7. Tasks on 2013

    1.改进并补充实验 2.样本选取和文档分布调查 3. Diversity Metrics 4. PPT for Project starting 1. Chrome & webkit 2. O ...

  8. 基于adt-bundle的Android开发环境搭建

    web与移动是当今的热门,怎么说都得会一点,完全不懂是不行的. 一直想玩一下移动开发,穷屌丝暂时没有iPhone和Mac,所以先拿Android开刀. 之前也有想过玩一下Android,但是都被各种博 ...

  9. HDU-4662 MU Puzzle 水题

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4662 倒推考虑长度就可以了. //STATUS:C++_AC_31MS_240KB #include ...

  10. 系统时间不一致导致memcached的session不共享

    测试服务器需要做负载均衡,采用的是Nginx+Tomcat. 负载均衡配置成功之后,采用memcached配置session同步.总共4台服务器,三台服务器很顺利的配置成功,最后一台服务器死活不能共享 ...