我們可以通過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(){@Overridepublic 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); }}