通過調用android系統提供的電話與簡訊功能,可以簡單的實現傳送簡訊,撥打到電話,但是必須在AndroidManifest.xml裡面配置相應許可權,定位到
1 <application
2
3 /application>
標籤外面一層,撥打到電話的許可權為android.permission.CALL_PHONE,傳送簡訊的許可權為android.permission.SEND_SMS.
而內部代碼主要是寫按鈕的單擊事件就可以了,覆寫 onClick()事件
傳送簡訊:
1 @Override
2 public void onClick(View v)
3 {
4 // 管理簡訊的操作類,例如發送資料,文本,通過調用getDefault()方法獲得對象;
5 SmsManager smsManager = SmsManager.getDefault();
6 // 如果簡訊內容多長,將自動分割為多條資訊,存放在ArrayList裡面;
7 ArrayList<String> textsArrayList = smsManager.divideMessage(conEditText.getText()
8 .toString());
9 // 利用for迴圈將簡訊發送出去;
10 for (String text : textsArrayList)
11 {
12 // 實現發送文本簡訊的函數是smsManager的sendTextMessage()方法
13 smsManager.sendTextMessage(phoneEditText.getText().toString(), null, text, null, null);
14 }
15 // 這句話適用於提示使用者簡訊已發送成功的
16 // Toast.makeText(MySMSActivity.this, R.string.success,
17 // Toast.LENGTH_LONG).show();
18 }
撥打到電話:
1 @Override
2 public void onClick(View v)
3 {
4 String phonenum = phoneEditText.getText().toString();
5 // 使用Intent
6 Intent intent = new Intent("android.intent.action.CALL", Uri.parse("tel:" + phonenum));
7 // 開啟廣播意圖
8 startActivity(intent);
9 }
打電話和發簡訊都是調用Android系統服務,但是在實現的代碼上是不同。在調用smsManager.divideMessage()時發現傳送簡訊的函數還有兩個,查看協助文檔知道分別是sendDataMessage 和sendMultipartTextMessage,他們的聲明和作用如下:
public void sendDataMessage (String destinationAddress, String scAddress, short destinationPort, byte[] data, PendingIntent sentIntent, PendingIntent deliveryIntent)
基於簡訊發送一個資料到一個特定的應用程式連接埠(Send a data based SMS to a specific application port.)
public void sendMultipartTextMessage (String destinationAddress, String scAddress, ArrayList<String> parts, ArrayList<PendingIntent> sentIntents, ArrayList<PendingIntent> deliveryIntents)
基於簡訊發送多個文本。事先已將簡訊內容分割為多個部分(Send a multi-part text based SMS. The callee should have already divided the message into correctly sized parts by calling divideMessage
.)
具體怎麼用的還沒研究。