1. 程式人生 > >傳送簡訊和打電話的方法

傳送簡訊和打電話的方法

傳送簡訊的方法

有兩種方法可以實現傳送簡訊,

其一是使用 intent-startActivity

   U RI 資料格式為" smsto:num ", 呼叫的 action Intent.ACTION_SENDTO

Uri uri = Uri.parse ("smsto:5554");

Intent it = new Intent(Intent.ACTION_SENDTO , uri);

it.putExtra("sms_body", " 好。。 ");

startActivity(it);        

其二是使用SmsManager:

EditText num=(EditText)findViewById(R.id.num );

                EditText content=(EditText)findViewById(R.id.content );

                String mobile=num.getText().toString();

                String smstext=content.getText().toString();

                //

獲取 SmsManager

                SmsManager sms=SmsManager.getDefault ();

                // 如果內容大於 70 字,則拆分為多條

                List<String> texts=sms .divideMessage(smstext);

                // 逐條傳送簡訊

                for (String text:texts)

                {

                    sms.sendTextMessage(mobile, null

, text, null , null );

                }                

                // 傳送結果提示

                Toast.makeText (SendSMS.this , " 傳送成功 ", Toast.LENGTH_LONG ).show();

二者的不同在於前者只是呼叫了傳送介面,需要按下Send按鈕簡訊才傳送出去,而後者則是直接傳送出去。

傳送SMS許可權的設定:

<uses-permission android:name="android.permission.SEND_SMS" />

關於SmsManager

SDK 中的介紹: Manages SMS operations such as sending data, text, and pdu SMS messages. Get this object by calling the static method SmsManager.getDefault().

方法:

public void sendTextMessage (String destinationAddress, String scAddress, String text, PendingIntent sentIntent, PendingIntent deliveryIntent)

destinationAddress: 收件人地址

scAddress: 簡訊中心號碼,null為預設中心號碼

sentIntent: 當訊息發出時,成功或者失敗的資訊報告通過PendingIntent來廣播。如果該引數為空,則發信程式會被所有位置程式檢查一遍,這樣會導致傳送時間延長。

deliveryIntent: 當訊息傳送到收件人時,該PendingIntent會被廣播。pdu資料在狀態報告的extended data ("pdu")中。

如果收件人或者資訊為空則丟擲 IllegalArgumentException 。

public ArrayList<String> divideMessage (String text)

將大於70字的簡訊分割為多條。

引數:text    the original message. Must not be null.

返回:an ArrayList of strings that, in order, comprise the original message

sendDataMessage 引數與上類似,只是用於傳送Data。

sendMultipartTextMessage傳送多條簡訊,傳送內容必須是用divideMessage分割好了的。

打電話的方法

打電話的方法類似,所不用的是URI格式為"tel:num" ,而呼叫的action為 Intent.ACTION_CALL

EditText edit=(EditText)findViewById(R.id.DialEdit );

String num=edit.getText().toString();

if ((num!=null )&&(!"".equals(num.trim())))

{

Intent intent=new Intent(Intent.ACTION_CALL ,Uri.parse ("tel:"+num));

                    startActivity(intent);

}

打電話許可權的設定:

<uses-permission android:name="android.permission.SEND_SMS" />

向模擬器發簡訊打電話的方法

1.啟動android emulator,檢視標題欄找出埠。一般是android emulator (5554),其中5554就是埠。

2.開啟命令列,輸入telnet localhost 5554。程式將會連線到android console,返回

Android Console: type 'help' for a list of commands

OK

模擬電話打入gsm <call|accept|busy|cancel|data|hold|list|voice|status>

輸入gsm call <模擬打進的電話號碼>。如:

gsm call 15555218135

模擬簡訊傳送sms send <senderPhoneNumber> <textmessage>

輸入sms send <模擬傳送簡訊的電話> <內容>。如:

sms send 15555218135 hello

其中,15555218135為模擬器手機號碼。

http://www.cnblogs.com/feisky/archive/2010/06/10/1755914.html