Android学习4—短信发送器的实现
界面预览:
由图中可以看出,此APP需要的组件有:两个TextView,一个用于显示手机号码的标题,另一个用于显示短信内容的标题。
两个EditText,一个用于存放手机号码,另一个用于存放即将的发送短信的内容。
一个Button,用于确认发送信息。
故在main_activity.xml中的代码如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" ><TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="手机号码" />
<EditText
android:id="@+id/main_activity_telephone"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="短信内容"/>
<EditText
android:id="@+id/main_activity_message"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:minLines="3"
android:maxLines="7"/>
<Button
android:id="@+id/main_activity_sendButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="发送"/></LinearLayout>
代码解释:
在这段代码中,其布局和上一个学习例子类似,不同的地方就是,此Activity布局文件有5个控件,且第三个控件的属性中多了一些和上面3个不同的地方,那就是minLines和maxLines3,minLines表示这个文本输入框最小的显示高度为3行数据的高度,maxLines表示文本输入框最大的显示高度为7行数据的高度。之所以添加最大行的限制,是为了防止当短信内容过多时,其文本框变大时,由于过大而影响了Button控件的显示效果。
MainActivity.java文件的代码编写:
package com.example.messageSender;
import java.util.ArrayList;
import android.support.v7.app.ActionBarActivity;
import android.telephony.SmsManager;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;public class MainActivity extends ActionBarActivity {
private Button sendButton;
private EditText phoneNumber,messages;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sendButton = (Button) findViewById(R.id.main_activity_sendButton);
phoneNumber = (EditText) findViewById(R.id.main_activity_telephone);
messages = (EditText) findViewById(R.id.main_activity_message);
sendButton.setOnClickListener(new ButtonOnClick());
}
private final class ButtonOnClick implements View.OnClickListener{@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String telephone = phoneNumber.getText().toString().trim();
String sendMessages = messages.getText().toString();
SmsManager smsManager = SmsManager.getDefault();
ArrayList<String> messageArr = smsManager.divideMessage(sendMessages);
for(String message : messageArr){
smsManager.sendTextMessage(telephone, null, message, null, null);
}
Toast.makeText(MainActivity.this, "短信发送成功", Toast.LENGTH_LONG).show();
}
}
}
在这段代码中有好多和上一个例程相同的地方,所以我重点讲解ButtonOnClick类中onClick方法中的代码(偷偷懒O(∩_∩)O~)
在这段代码中,首先是获取电话号码telephone和短信内容sendMessages,然后通过SmsManager类来实现短信发送的功能,通过SmsManager.getDefault()方法获取短信发送管理器,然后通过短信发送管理器的divideMessage方法,将短信的内容分成多个短信片段(因为Android每次发送的短信内容数量有限制,所以对于过长的短信内容可以通过此方法将短信内容分成多个信息进行分别发送),最后调用短信发送管理器的sendTextMessage方法将短信发送出去。对于sendTextMessage方法中的参数:
第一个参数为发送目标的电话号码
第二个参数为服务中心的地址,如果为null则使用当前默认的短信服务中心(如果你的手机为移动,则使用移动服务中心,如果为联通,则使用联通服务中心……)
第三个参数为发送消息的内容
第四个参数表示发送成功和失败分别进行怎样的处理,若为null,则当消息发送成功或失败时,则这个PendingIntent就进行广播,结果代码是Activity.RESULT_OK表示成功,或RESULT_ERROR_GENERIC_FAILURE、RESULT_ERROR_RADIO_OFF、RESULT_ERROR_NULL_PDU之一表示错误。对应RESULT_ERROR_GENERIC_FAILURE,sentIntent可能包括额外的“错误代码”包含一个无线电广播技术特定的值,通常只在修复故障时有用。此处,我直接使用null(更详细的用法请参考官方的API)。
第五个参数用于验证接收方是否接收到改短信内容。如果不为空,则当消息成功传送到接受者是,这个PendingIntent就广播。
注:如果你的短信内容或接收方手机号码为空,则将会产生
IllegalArgumentException异常。
最后为了显示信息发送完毕,使用一个Toast弹出一个显示消息:
Toast.makeText(MainActivity.this, "短信发送成功", Toast.LENGTH_LONG).show();
makeText的第一个参数表示一个上下文对象,第二个参数表示为显示的内容,最后一个参数为显示该Toast的时间长短,Toast.LENGTH_LONG表示显示时间稍微长一点,Toast.LENGTH_SHORT表示显示时间稍微短一些,随后别忘记了调用该Toast的show方法将其显示出来。
最后,和上一章的电话拨号器一样,由于App使用了系统权限,所以要给app添加一个用户权限,在AndroidManifest.xml配置中添加如下代码:
<uses-permission android:name="android.permission.SEND_SMS"/>
最后运行,效果如下:
Android学习4—短信发送器的实现的更多相关文章
- Android实现简单短信发送器
布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:to ...
- android开发学习---开发一个简易的短信发送器
一.需求: 开发一个简易的短信发送器,输入:对方手机号码,短信内容,点击发送按钮,短信发送成功,对方手机成功收到短信. 其中要求短信内容过长时可以自动拆分,长度英文是160个英文,中文是70个,中英混 ...
- Android(java)学习笔记99:android的短信发送器研究
1.第一种可以调用系统内部的短信程序. 之前我曾经出现过一个bug就是报错: android.content.ActivityNotFoundException: No Activity found ...
- 无废话Android之常见adb指令、电话拨号器、点击事件的4种写法、短信发送器、Android 中各种布局(1)
1.Android是什么 手机设备的软件栈,包括一个完整的操作系统.中间件.关键的应用程序,底层是linux内核,安全管理.内存管理.进程管理.电源管理.硬件驱动 2.Dalvik VM 和 JVM ...
- Android实战--短信发送器
首先设计界面 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:t ...
- Android短信发送器_08
1.string xml代码 <?xml version="1.0" encoding="utf-8"?> <resources> &l ...
- 初识安卓小程序(Android短信发送器)
首先,先创建一个安卓项目(我的版本号是4.4.2的),名字为"短信发送器" 然后在res目录下找到layout目录,找到activity_main.xml或fragment_mai ...
- Android短信发送器(2)
在上一篇的<Android短信发送器>当中.发送功能并不完好.当发送内容超过限定字数时,短信就会发送失败,此时就须要推断内容是否超过限制,假设不超过限制.就直接发送,反之.则对其进行处理再 ...
- Android_简易的短信发送器
这个随笔将介绍如何完成一个简单的第三方的短信发送器(不打开短信界面,调用android的api完成功能) 1.首先,我们来做布局 由于我这里写的是一个简易的,,短信发送,所以只是一个LinearLay ...
随机推荐
- How to compile pycrypto 2.4.1 (python 3.2.2 for Windows 7 x64)
How to compile pycrypto 2.4.1 (python 3.2.2 for Windows 7 x64) Nov 10 Posted by alesk This note is a ...
- How Do I Deploy a Windows 8 App to Another Device for Testing?
If your developing a new Windows 8 app and you want to test it on another device (e.g. Surface), you ...
- Jsp学习(2)
Jsp的三大指令 (1).include 作用:相当于把当前页面去包含页面 语法: <%@include file="/common/test.jsp" %> 实例如下 ...
- hdu 1247 Hat’s Words(字典树)
Hat's Words Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota ...
- [Angular 2] DI in Angular 2 - 1
Orgial aritial --> Link The problem with Angular 1 DI: Angular 2 DI: Solve the singletons problem ...
- End-to-End Tracing of Ajax/Java Applications Using DTrace
End-to-End Tracing of Ajax/Java Applications Using DTrace By Amit Hurvitz, July 2007 Aja ...
- mysql日期时间函数2
win7可以设定每周从哪一天开始,win2003等不能方便的修改.有的是周日开始,有的是周一开始.而工作中有的时候每周是从周六开始算的,有些数据需要按周统计,那么那种方式比较好呢? 通过下面的研究 ...
- LabVIEW设计模式系列——移位寄存器
标准:1.太多移位寄存器会导致连线太多,看起来凌乱,使用簇将变量打包,统一用一个移位寄存器,这样可以减少连线的麻烦2.如果每个变量都使用一个移位寄存器,没有一个名字是很难区分移位寄存器到底属于哪一个变 ...
- Chapter 6 - How to Play Music and Sound Effect
In this chapter, we would add background music to the game and play sound effect when the hero fires ...
- apache kafka技术分享系列(目录索引)--转载
原文地址:http://blog.csdn.net/lizhitao/article/details/39499283 kafka开发与管理: 1)apache kafka消息服务 2)kafak安装 ...