我们可以通过Intent调用发送短信的服务,但是也可以通过SmsManager发送;
一、为何需要自己开发短信发送器
虽然在Android系统中已经存在发送短信的应用,但是如果我们在开发其他应用时需要集成发送短信功能,则很方便。
二、开发短信发送器
应用目标:将应用安装到5554模拟器上,并发送给5556的模拟器;
界面介绍:
核心代码:
(1)SmsManager manager = SmsManager.getDefault(); //获得默认的消息管理器
(2)ArrayList<String> list = manager.divideMessage(String txt); //拆分长短信
(3)manager.sendTextMessage(String phone,null,String content,null,null); //发送短信
在AndroidManifest.xml中添加:
- <uses-permission android:name="android.permission.SEND_SMS"/>
MainActivity.java
- package org.xiazdong;
- import java.util.ArrayList;
- import android.app.Activity;
- import android.os.Bundle;
- import android.telephony.SmsManager;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.Toast;
- public class MainActivity extends Activity {
- private Button btn;
- private EditText phoneEt,contextEt;
- private OnClickListener listener = new OnClickListener(){
- @Override
- public void onClick(View v) {
- String phone = phoneEt.getText().toString();
- String context = contextEt.getText().toString();
- SmsManager manager = SmsManager.getDefault();
- ArrayList<String> list = manager.divideMessage(context); //因为一条短信有字数限制,因此要将长短信拆分
- for(String text:list){
- manager.sendTextMessage(phone, null, text, null, null);
- }
- Toast.makeText(getApplicationContext(), "发送完毕", Toast.LENGTH_SHORT).show();
- }
- };
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- btn = (Button)this.findViewById(R.id.btn);
- phoneEt = (EditText)this.findViewById(R.id.phoneNumberEt);
- contextEt = (EditText)this.findViewById(R.id.contextEt);
- btn.setOnClickListener(listener);
- }
- }