有以下兩種方式來使用 Android 設(shè)備發(fā)送短信:
使用 SmsManager 發(fā)送短信
使用內(nèi)置 Intent 發(fā)送短信
SmsManager管理,例如在給定的移動(dòng)設(shè)備將數(shù)據(jù)發(fā)送到的SMS操作??梢詣?chuàng)建此對象調(diào)用靜態(tài)方法SmsManager.getDefault() 如下:
SmsManager smsManager = SmsManager.getDefault();
創(chuàng)建 SmsManager 對象之后,可以使用 sendDataMessage() 方法指定的手機(jī)號碼發(fā)送短信,如下:
smsManager.sendTextMessage("phoneNo", null, "SMS text", null, null);
除了上述方法外,SmsManager類可供選擇的其他幾個(gè)重要的函數(shù)。下面列出了這些方法:
S.N. | 方法和說明 |
---|---|
1 |
ArrayList<String> divideMessage(String text) 這個(gè)方法把一個(gè)消息文本分成幾個(gè)片段,最大不能大于短信大小 |
2 |
static SmsManager getDefault() 這個(gè)方法被用來獲取 SmsManager 的默認(rèn)實(shí)例 |
3 |
void sendDataMessage(String destinationAddress, String scAddress, short destinationPort, byte[] data, PendingIntent sentIntent, PendingIntent deliveryIntent) 這個(gè)方法被用來發(fā)送一個(gè)基于數(shù)據(jù) SMS 到特定的應(yīng)用程序的端口 |
4 |
void sendMultipartTextMessage(String destinationAddress, String scAddress, ArrayList<String> parts, ArrayList<PendingIntent> sentIntents, ArrayList<PendingIntent> deliveryIntents) 發(fā)送一個(gè)基于多部分文本短信 |
5 |
void sendTextMessage(String destinationAddress, String scAddress, String text, PendingIntent sentIntent, PendingIntent deliveryIntent) 發(fā)送基于文本的短信 |
下面的示例演示如何在實(shí)際中使用 SmsManager 對象給定的手機(jī)號碼發(fā)送短信。
要嘗試這個(gè)例子中,需要實(shí)際配備了最新 Android OS 的移動(dòng)設(shè)備,否則仿真器可能無法正常工作。
步驟 | 描述 |
---|---|
1 | 使用Android Studio 創(chuàng)建Android應(yīng)用程序,并將它命名為SendSMSDemounder。在創(chuàng)建這個(gè)項(xiàng)目,確保目標(biāo) SDK 編譯在Android SDK 的最新版本或使用更高級別的API |
2 | 修改 src/MainActivity.java 文件,并添加所需的代碼以發(fā)送短信 |
3 | 修改所需的布局XML文件 res/layout/activity_main.xml 添加任何GUI組件。加入了一個(gè)簡單的GUI以輸入手機(jī)號碼并短信發(fā)送,以及一個(gè)簡單的按鈕發(fā)送短信。 |
4 | 修改 res/values/strings.xml 定義所需的常量值 |
5 | 修改 AndroidManifest.xml 如下所示 |
6 | 運(yùn)行該應(yīng)用程序啟動(dòng)Android模擬器并驗(yàn)證應(yīng)用程序所做的修改結(jié)果。 |
以下是修改的主活動(dòng)文件 src/com.yiibai.sendsmsdemo/MainActivity.java 的內(nèi)容
package com.example.sendsmsdemo; import android.os.Bundle; import android.app.Activity; import android.telephony.SmsManager; import android.util.Log; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity { Button sendBtn; EditText txtphoneNo; EditText txtMessage; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); sendBtn = (Button) findViewById(R.id.btnSendSMS); txtphoneNo = (EditText) findViewById(R.id.editTextPhoneNo); txtMessage = (EditText) findViewById(R.id.editTextSMS); sendBtn.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { sendSMSMessage(); } }); } protected void sendSMSMessage() { Log.i("Send SMS", ""); String phoneNo = txtphoneNo.getText().toString(); String message = txtMessage.getText().toString(); try { SmsManager smsManager = SmsManager.getDefault(); smsManager.sendTextMessage(phoneNo, null, message, null, null); Toast.makeText(getApplicationContext(), "SMS sent.", Toast.LENGTH_LONG).show(); } catch (Exception e) 上一篇:Android GridView下一篇:Android Clipboard(復(fù)制/剪貼板)