要使用手機短信服務,在AndroidManifest.xml中必須添加短信服務權限
AndroidManifest.xml
<uses-permission android:name="android.permission.SEND_SMS"/><!–添加權限–>
package com.sms;
import java.util.List;
import android.app.Activity;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity implements
android.view.View.OnClickListener {
/** Called when the activity is first created. */
private EditText contact;
private EditText smsContent;
private Button commit;
private String strNo;
private String strSms;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initView();
onClickListener();
}
public void initView() {
contact = (EditText) findViewById(R.id.contact);
smsContent = (EditText) findViewById(R.id.smsContent);
commit = (Button) findViewById(R.id.commit);
}
public void onClickListener() {
commit.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.commit:
strNo = contact.getText().toString();
strSms = smsContent.getText().toString();
// TODO Auto-generated method stub
/*
* 在 Android 2.0 以前 應該使用 android.telephony.gsm.SmsManager 之後應該用
* android.telephony.SmsManager;
*/
// 獲取系統默認的短信管理器
SmsManager smsManager = SmsManager.getDefault();
PendingIntent sentIntent = PendingIntent.getBroadcast(
MainActivity.this, 0, new Intent(), 0);
// 如果字數超過70,需拆分成多條短信發送
// 按照每條短信最大字數來拆分短信
if (strSms.length() > 70) {
List<String> msgs = smsManager.pideMessage(strSms);
for (String msg : msgs) {
/*
* 發送短信
*
* smsManager.sendTextMessage(destinationAddress, scAddress,
* text, sentIntent, deliveryIntent)
*
* — destinationAddress:目標電話號碼
*
* — scAddress:短信中心號碼,測試可以不填
*
* — text: 短信內容
*
* — sentIntent:發送 –>中國移動 –> 中國移動發送失敗 –> 返回發送成功或失敗信號 –>
* 後續處理 即,這個意圖包裝瞭短信發送狀態的信息
*
* — deliveryIntent: 發送 –>中國移動 –> 中國移動發送成功 –>
* 返回對方是否收到這個信息 –> 後續處理
* 即:這個意圖包裝瞭短信是否被對方收到的狀態信息(供應商已經發送成功,但是對方沒有收到)。
*/
smsManager.sendTextMessage(strNo, null, msg, sentIntent,
null);
}
} else {
smsManager.sendTextMessage(strNo, null, strSms, sentIntent,
null);
}
Toast.makeText(MainActivity.this, "短信發送完成", Toast.LENGTH_LONG)
.show();
break;
}
}
}